#include "stdafx.h" #include <queue> #include <iostream> #include <map> #include <string> using namespace std; // 类模板的使用 // 类模板中 类成员函数的申明与定义 // 结构体模板的使用 // 函数模板的使用 template <typename T> class A { public: A(); A(T _a,T _b); // T 代表任何类型的数据 T sum(); private: T a; T b; }; template <class T1,class T2> struct Test { T1 H; T2 W; }; template <class T>A<T>::A() //类模板的成员函数是模板函数 { a=0; b=0; } template <class T>A<T>::A(T _a,T _b) { a=_a; b=_b; } template <class T>T A<T>::sum()//注意观察成员函数的写法 { return a + b; } template <class X>void swapFun(X &x,X &y) // X 代表任何数据类型 { X tmp; tmp=x; x=y; y=tmp; } int _tmain(int argc, _TCHAR* argv[]) { A<int> obj1(3,4); A<double>obj2(2.33,3.67); cout<<"obj1.sum(3, 4)="<<obj1.sum()<<"\n"<<"obj2.sum(2.33, 3.67)="<<obj2.sum()<<endl; Test <double,int>tt[]={{20.5,23},{10.5,24}}; printf("1 :%f %d\n",tt[0].H,tt[0].W); printf("2 :%f %d\n",tt[1].H,tt[1].W); int a=3,b=5; swapFun(a,b); printf("%d,%d\n",a,b); system("pause"); return 0; }
运行结果