template 分为类模板(class template)、函数模板( function template )、成员模板( member template )三类。
①类模板 顾名思义,这是一个类(class) template<typename T> class complex { public: complex(T r = 0 , T i = 0 ) :re(r),im(i) {} complex& operator += (const complex&); T real () const {return re;} T imag() const {return im;} private: T re,im; friend complex& __doapl(complex*,const complex&); }其中< typename T>也吸写做< class T>,T表示类型名。 应用时
{ complex<double> c1(1.1,2.2); complex<int> c2(1,2); } ②函数模板 这是一个函数 template<class T> inline const T& min(const T&a,const T&b) { return b<a?b:a; } 调用过程如上,实际应用时T类中要有对 operator<(T,T) ③成员模板 本身是一个模板,而它又是类中的一个成员,如下图中黄色部分 应用时 { class A{}; class B{}; class Aa:public A{}; class Bb:public B{}; pair<Aa,Bb> c1; pair<A,B> c(c1); }