泛型编程之类模板
》所谓类模板就是建立一个通用类,其数据成员,成员函数的返回类型和形参类型不具体指定,用一个虚拟的类型来代表。
因为上一篇博客已经讲得很细致,所以这一篇会省略一些文字。
》声明:
template <typename 类型参数>
class 类名{
类成员声明
};
关键字的意义和函数模板的一样。
》用类模板定义对象时:
类模板名 <实际类型名> 对象名;
类模板名 <实际类型名> 对象名(实参列表);
例:
template<typenameT>classThree{public:Three(Ta,Tb,Tc){x=a;y=b;z=c;}TSum(){returnx+y+z;}private:Tx,y,z;};intmain(){Three<int>sum3_1(3,5,7);Three<double>sum3_2(12.34,34.56,56.78);cout<<"三个数之和是:"<<sum3_1.Sum()<<endl;cout<<"三个数之和值是:"<<sum3_2.Sum()<<endl;return0;}
类的成员函数(含有类型参数)式定义在类内的,但是,类模板中的成员函数也可以在类模板体外定义,此时若成员函数中有类型参数存在则规则是:
1.需要在成员函数定义之前进行模板声明
2.在成员函数名前加“类名<类型参数>::”
template <typename 类型参数>
函数类型 类名<参数类型>::成员函数名(形参表)
{...
}
上述成员函数在类外定义也可以写成:
template <typename T>
T Three<T>::sum()
{return x+y+z;
}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。