C++11怎么声明模板类型为形参或友元

发布时间:2021-11-29 13:42:52 作者:iii
来源:亿速云 阅读:195

C++11怎么声明模板类型为形参或友元

在C++11中,模板编程是一个强大的特性,它允许我们编写通用的代码,适用于多种数据类型。模板类型可以作为函数的形参,也可以作为类的友元。本文将详细介绍如何在C++11中声明模板类型为形参或友元。

1. 模板类型作为函数形参

在C++11中,我们可以将模板类型作为函数的形参。这样,函数可以接受任意类型的参数,只要这些类型满足模板的要求。

示例代码

#include <iostream>

template <typename T>
void printValue(const T& value) {
    std::cout << value << std::endl;
}

int main() {
    printValue(42);         // 输出: 42
    printValue(3.14);       // 输出: 3.14
    printValue("Hello");    // 输出: Hello
    return 0;
}

在这个例子中,printValue 函数是一个模板函数,它接受一个类型为 T 的参数。T 可以是任何类型,包括 intdoubleconst char*

2. 模板类型作为类的友元

在C++11中,我们还可以将模板类型声明为类的友元。这样,模板类型可以访问类的私有成员。

示例代码

#include <iostream>

template <typename T>
class MyClass {
private:
    T value;

public:
    MyClass(T val) : value(val) {}

    // 声明模板类型为友元
    template <typename U>
    friend void printValue(const MyClass<U>& obj);
};

template <typename U>
void printValue(const MyClass<U>& obj) {
    std::cout << obj.value << std::endl;
}

int main() {
    MyClass<int> obj1(42);
    MyClass<double> obj2(3.14);

    printValue(obj1);  // 输出: 42
    printValue(obj2);  // 输出: 3.14

    return 0;
}

在这个例子中,MyClass 是一个模板类,它有一个私有成员 value。我们通过声明 printValue 函数为 MyClass 的友元,使得 printValue 可以访问 MyClass 的私有成员 value

3. 注意事项

4. 总结

C++11中的模板编程提供了极大的灵活性,允许我们将模板类型作为函数的形参或类的友元。通过这种方式,我们可以编写更加通用和灵活的代码,适用于多种数据类型。掌握这些技巧,可以帮助我们更好地利用C++11的强大功能。

希望本文对你理解C++11中模板类型作为形参或友元的声明有所帮助。如果你有任何问题或建议,欢迎在评论区留言讨论。

推荐阅读:
  1. CXF处理形参,返回值类型
  2. C++语言学习(七)——友元

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c++

上一篇:适用于Mac的6种最佳幻灯片制作软件分别是什么

下一篇:C/C++ Qt TreeWidget单层树形组件怎么应用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》