template 简单分类
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);
}