c++++ 模板包含类模板和函数模板。类模板允许创建可用于不同数据类型的类,而函数模板可用于不同数据类型的函数。两者主要区别在于:类模板显式实例化,函数模板隐式实例化;类模板中类型参数在
c++++ 模板包含类模板和函数模板。类模板允许创建可用于不同数据类型的类,而函数模板可用于不同数据类型的函数。两者主要区别在于:类模板显式实例化,函数模板隐式实例化;类模板中类型参数在整个类定义中可见,而函数模板中仅在签名中可见。
C++ 中的类模板与函数模板
C++ 模板是一项强大的语言特性,它允许我们创建可重用代码,该代码可用于各种数据类型。C++ 提供了两种类型的模板:类模板和函数模板。
类模板
类模板允许我们创建可用于不同数据类型的类。换句话说,它允许我们创建一种蓝图,该蓝图可以用于创建具有不同数据类型(例如整数、浮点数或其他自定义类)的对象。
template <typename T>
class Array {
public:
Array(int size) : size(size), data(new T[size]) {}
~Array() { delete[] data; }
T& operator[](int index) { return data[index]; }
private:
int size;
T* data;
};
函数模板
函数模板允许我们创建可用于不同数据类型的函数。同样,它允许我们创建一种模板,该模板可以用于创建具有不同参数类型和返回值类型的函数。
template <typename T>
T max(T a, T b) {
return (a > b) ? a : b;
}
区别
类模板和函数模板之间的主要区别在于:
<>
符号(例如 Array<int>
)显式实例化,而函数模板是通过调用该函数并传递类型参数(例如 max<int>(3, 5)
)隐式实例化的。实战案例
类模板:创建一个 Pair
类模板,它存储两个不同类型的值。
template <typename K, typename V>
class Pair {
public:
Pair(K key, V value) : key(key), value(value) {}
K geTKEy() { return key; }
V getValue() { return value; }
private:
K key;
V value;
};
我们使用 Pair
类模板创建了一个存储整数键和字符串值的 Pair
对象:
Pair<int, string> pair(1, "C++");
cout << pair.getKey() << " " << pair.getValue() << endl; // 输出:1 C++
函数模板:创建一个 swap
函数模板,用于交换两个不同类型值的顺序。
template <typename T>
void swap(T& a, T& b) {
T temp = a;
a = b;
b = temp;
}
我们使用 swap
函数模板交换了两个整数:
int x = 1;
int y = 2;
swap(x, y); // 互换 x 和 y 的值
cout << x << " " << y << endl; // 输出:2 1
以上就是C++ 函数的类模板和函数模板有何区别?的详细内容,更多请关注编程网其它相关文章!
--结束END--
本文标题: C++ 函数的类模板和函数模板有何区别?
本文链接: https://www.lsjlt.com/news/603673.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0