天天看点

类模板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;
}      

运行结果

继续阅读