C++ 函数的类模板和函数模板有何区别?

c++++ 模板包含类模板函数模板。类模板允许创建可用于不同数据类型的类,而函数模板可用于不同数据类型的函数。两者主要区别在于:类模板显式实例化,函数模板隐式实例化;类模板中类型参数在整个类定义中可见,而函数模板中仅在签名中可见。

C++ 函数的类模板和函数模板有何区别?

C++ 中的类模板与函数模板

C++ 模板是一项强大的语言特性,它允许我们创建可重用代码,该代码可用于各种数据类型。C++ 提供了两种类型的模板:类模板和函数模板。

类模板

立即学习“C++免费学习笔记(深入)”;

类模板允许我们创建可用于不同数据类型的类。换句话说,它允许我们创建一种蓝图,该蓝图可以用于创建具有不同数据类型(例如整数、浮点数或其他自定义类)的对象。

template 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 T max(T a, T b) {    return (a > b) ? a : b;}

区别

类模板和函数模板之间的主要区别在于:

实例化方式:类模板通过使用 符号(例如 Array)显式实例化,而函数模板是通过调用该函数并传递类型参数(例如 max(3, 5))隐式实例化的。可见性:类模板中的类型参数在整个类定义中都可见,而函数模板中的类型参数仅在函数签名中可见。

实战案例

类模板:创建一个 Pair 类模板,它存储两个不同类型的值。

template 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 pair(1, "C++");cout << pair.getKey() << " " << pair.getValue() << endl; // 输出:1 C++

函数模板:创建一个 swap 函数模板,用于交换两个不同类型值的顺序。

template 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++ 函数的类模板和函数模板有何区别?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1446836.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 23:58:31
下一篇 2025年12月17日 23:58:45

相关推荐

发表回复

登录后才能评论
关注微信