4.模板函数与模板类
其实个人认为C++模板的概念跟其他面向对象的语言中的泛型概念有些类似,在学习一门新的概念的时候我们不妨将它跟它类似的概念类比的学习,这样印象会更加的深刻,模板的引入会让程序更加的通用,同时避免了代码的冗余。
定义模板有两种方式,第一种:template<typename T1, typename T2> 第二种方式是:template<class T1, class T2> 本人推荐大家使用第一种方式,看起来比较直观;接下来我们来看一下模板函数以及模板类的实例:
头文件:Test.h
函数文件:Test.cpp
输出的结果为:
从中可以看出我们只定义了一个swap模板函数,却可以有不同的入参;同样类A为模板类,可以给它定义不同类型的对象,从而实现功能的多样化。
一定要注意的是要按照像上述代码那样来定义和实现模板类和模板函数,本人初学模板的时候也出现过很多概念上的错误。
细心地人会发现,swap函数在交换value1和value3的时候发生了隐式的类型转换,即将doule类型转换为int类型,从而将14.12转换为14,当然在编译的时候编译器也会发出一个警告:
所以利用模板的时候一定要仔细认真,要确定这种隐式的类型转换,从而避免不必要的错误发生。
<未完待续>