CPP-基础:模板
// template.cpp : 定义控制台应用程序的入口点。 #include "stdafx.h" #include <iostream> #include <string> #include <vector> #include <algorithm> #include <ctime> // std::time #include <cstdlib> // std::rand, std::srand using namespace std; //类模板///////////////////////////////////////////////// template<class T1,class T2> class myClass{ private: T1 I; T2 J; public: myClass(T1 a, T2 b);//Constructor void show(); T1 Sums(); };
//这是构造函数 ,注意这些格式 template <typename T1,typename T2> myClass<T1,T2>::myClass(T1 a,T2 b):I(a),J(b) {}
//这是void show(); template <typename T1,typename T2> void myClass<T1,T2>::show() { cout<<"I="<<I<<", J="<<J<<endl; }
//这是Sums函数 template <typename T1,typename T2> T1 myClass<T1,T2>::Sums() { return I; } ////////////////////////////////////////////////////////
template<class A,class B> class CTemplate { private: A aa; B bb; public: CTemplate(A a, B b); void setdata(A n1,B n2); A getdataA(); B getdataB(); };
template<typename A,typename B> CTemplate<A,B>::CTemplate(A a, B b):aa(a),bb(b) {}
template<typename A,typename B> void CTemplate<A,B>::setdata(A n1,B n2) { aa = n1; bb = n2; }
template<typename A,typename B> A CTemplate<A,B>::getdataA() { cout<<"aa:"<<aa<<" "<<endl; return aa; };
template<typename A,typename B> B CTemplate<A,B>::getdataB() { cout<<"bb:"<<bb<<" "<<endl; return bb; };
//函数模板////////////////////////////////////////////// template <typename T1, typename T2> void FunctionTemplate(T1 a, T2 b) { cout<<"a:"<<a<<" "<<"b:"<<b<<endl; } ////////////////////////////////////////////////////////
}int _tmain(int argc, _TCHAR* argv[])
{ myClass<int,int> class1(3,5); class1.show(); myClass<int,char> class2(3,'a'); class2.show(); myClass<double,int> class3(2.9,10); class3.show(); myClass<float,float> class4(3.1,2.5); float ff=class4.Sums(); cout<<"ff:"<<ff<<endl; /////////////////////////////////////////////////// CTemplate<int, int> o_Tmeplate1(1,2); //o_Tmeplate1.setdata(3,4); o_Tmeplate1.getdataA(); o_Tmeplate1.getdataB(); CTemplate<float,float> o_Tmeplate2(2.003,3.001); o_Tmeplate2.getdataA(); o_Tmeplate2.getdataB(); /////////////////////////////////////////////////// int a =3 ; int b = 5; FunctionTemplate(a,b); double d =3.3 ; double c = 5.5; FunctionTemplate(d,c); /////////////////////////////////////////////////// system("PAUSE"); return 0; }