您好,登录后才能下订单哦!
在C++11中,模板编程是一个强大的特性,它允许我们编写通用的代码,适用于多种数据类型。模板类型可以作为函数的形参,也可以作为类的友元。本文将详细介绍如何在C++11中声明模板类型为形参或友元。
在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
可以是任何类型,包括 int
、double
和 const char*
。
在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
。
C++11中的模板编程提供了极大的灵活性,允许我们将模板类型作为函数的形参或类的友元。通过这种方式,我们可以编写更加通用和灵活的代码,适用于多种数据类型。掌握这些技巧,可以帮助我们更好地利用C++11的强大功能。
希望本文对你理解C++11中模板类型作为形参或友元的声明有所帮助。如果你有任何问题或建议,欢迎在评论区留言讨论。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。