c\c++基础|c++模板学习笔记

一、模板定义: 模板是实现代码重用机制的一种工具,可以实现类型的参数化,即将类型作为参数,从而实现代码重用。模板分为函数模板和类模板两种。
二、函数模板

一般格式如下: Template 返回类型 函数名(形参表) { //函数定义体 } //其中:Template为模板声明的关键字,用class或typename修饰类型参数,模板参数可以是一个,也可以是多个。

实例如下:
template //T为传入的类型 T demo(T a,T b){ return a + b; } int main(){ int a = 1; int b = 2; //也可传入其他任意基础类型或类类型等,此时实现了代码的重用,即可做int型的a加b,亦可作double型的。 printf("%d\n",demo(a,b)); return 0; }

【c\c++基础|c++模板学习笔记】##三、 类模板 ##
一般格式如下: Template class 类名 { //类定义... }; //其中:Template为模板声明的关键字,用class或typename修饰类型参数。

类外函数的实现如下:
1、构造函数 Template 类名::类名(参数){ //函数实现 }; 2、一般函数 Template 返回值 类名::类名(参数){ //函数实现 }; **其中:Template 与 类名尖括号类的参数个数相同,类名中无需关键字class or typename**

实例如下:
无参构造:template class myClass{public: T a; T b; myClass(); T add(T a,T b); }; template myClass::myClass(){}; template T myClass::add(T a,T b){ return a + b; } int main(){ myClass demo; printf("%d\n",demo.add(a,b)); return 0 ; }有参构造: template class myClass{ public: T a; T b; myClass(T a,T b); T add(T a,T b); }; template myClass::myClass(T a,T b):a(a),b(b){}; template T myClass::add(T a,T b){ return a + b; } int main(){ myClass demo(a,b); printf("%d\n",demo.add(a,b)); return 0 ; }

可以将c++模板和java泛型联系起来,便于理解。本文如有不对之处,请各位读者提供修正意见

    推荐阅读