天天看點

類模闆template的使用!

#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;
}      

運作結果

繼續閱讀