C++模板的使用

发布时间:2022-06-29 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了C++模板的使用脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

1、什么是模板

模板最大的作用就在于可以建立一个通用的架构提高代码的复用性,就比如我们在网上下载的PPT模板就可以使用外观把内容更换成我们自己的内容。

2、函数模板(也叫泛型编程)

C++提供两种模板机制:函数模板和类模板

2.1 函数模板的语法

作用:建立一个通用模板,函数返回值类型可以在使用时指定。

语法:

&nbsp;1 template<tyPEname T> //模板函数的申明 

template:申明创建模板

typename:表明后面的符号是一种数据类型,也可用class代替

T:数据类型名称,可以用其它字母替换。

比如有两个函数实现方法一样只是函数参数类型不一样

 1 void swapInt(int &a, int &b)  //整数交换
 2 {
 3     int temp = a;
 4     a = b;
 5     b = temp;
 6 }
 7 void swapDouble(double &a, double &b)  //浮点数交换
 8 {
 9     double temp = a;
10     a = b;
11     b = temp;
12 }

如果使用模板就不需要定义两个函数,在使用函数的时候再定义函数的类型

在指定函数时可以使用函数推导或显示指定函数类型

 1 //函数模板语法
 2 template<typename T>
 3 
 4 void Swap(T &a, T &b)
 5 {
 6     T temp = a;
 7     a = b;
 8     b = temp;
 9 }
10 void test01()
11 {
12     int a = 10;
13     int b = 20;
14     //Swap(a, b);  //自动类型推导
15     //显示指定类型
16     Swap<int>(a, b);
17     cout << a << endl;
18     cout << b << endl;
19     
20 }

总结:

  • 函数模板利用关键字 template
  • 使用函数模板有两种方式:自动类型推导、显示指定类型
  • 模板的目的是为了提高复用性,将类型参数化

3、使用函数模板的注意事项

  • 自动类型推导时必须推导出数据的一致性T才能使用
  • 模板必须确定出T的数据类型才能使用(即使没用使用数据类型T)
1     int a = 10;
2     int b = 20;
3     char c = 'c';
4     //显示指定类型
5     Swap<int>(a, c);  //传入数据类型不一致可能会报错
 1 template<typename T>
 2 void func()
 3 {
 4     cout << "func()函数调用" << endl;
 5 }
 6 void test01()
 7 {
 8     func<int>();  //当使用了模板即使没有用到数据类型T时在调用时也必须传入一个数据类型才能调用。
 9     
10 }

 

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        

 

脚本宝典总结

以上是脚本宝典为你收集整理的C++模板的使用全部内容,希望文章能够帮你解决C++模板的使用所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。