#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;
}
運作結果