标签:
//函数模板定义--数据类型做参数 #include<iostream> using namespace std; /* 函数模板声明 1.函数模板定义由模板说明和函数定义组成,并且一个模板说明对应一个函数定义 2.模板说明的类属参数必须在函数定义中至少出现一次 3.函数参数表中可以使用类属类型参数,也可以使用一般类型参数 */ /* template关键字告诉c++编译器现在要进行泛型编程 typename或者class告诉c++编译器T是一个数据类型,不要进行语法检查 typename和class完全可以互相替换 */ template<typename T>//也可以写成template<class T> void myswap(T &a, T &b){ T c = a; a = b; b = c; }; //void Print(T &a,T &b){ // cout << "a=" << a << "\nb=" << b << endl; //} //报错:一个模板说明只能对应一个函数定义,想再定义一个函数,必须再写一个模板声明 template<class T> void Print(T &a, T &b){ cout << "a=" << a << "\nb=" << b << endl; } //多参数的函数模板 template<typename T1,typename T2> //这种定义当调用函数时就会报错 MySort(a); //模板说明的类属参数必须在函数定义中至少出现一次 void MySort(T1 a){ cout << "aaa" << endl; } template<typename T> void Getnum(T a,int b){ cout << "a=" << a << ";\nb="<<b << endl; } void main(){ int a=1; int b = 2; //泛型编程函数的使用方法1---自动类型推导 myswap(a, b); Print(a, b); //泛型编程函数的使用方法2---显式具体类型调用 myswap<int>(a, b); Print(a, b); //MySort(a); 报错 : error C2783: “void MySort(T1)”: 未能为“T2”推导 模板 参数 cout << "----------------" << endl; Getnum(a, 4); system("pause"); }
标签:
原文地址:http://www.cnblogs.com/zhanggaofeng/p/5656670.html