C++中,什么是成员模板?成员模板代码实例
程序员文章站
2022-07-08 12:05:50
1.所谓成员模板,模板中有个member,它本身也是一个template,就叫做成员模板。
2.例子:
template
struct pair
{
typ...
1.所谓成员模板,模板中有个member,它本身也是一个template,就叫做成员模板。
2.例子:
template struct pair { typedef T1 first_type; typedef T2 second_type; T1 first; T2 second; pair() :first(T1()), second(T2()) {} pair(const T1& a ,const T& b) :first(a),second(b) {} template pair(const pair& p) :first(p.first),second(p.second) {} };在模板上T1 T2在变换过程中,如果已经固定,那么在成员中U1 U2又能变换。
3.
class Base1{}; class Derived1:public Base1{}; class Base2{}; class Derived2:public Base2{};假设有这些类的继承关系。
pair p; pair p2(p);这样就是拿T1 T2来制作一个p。
第二行就是那两个父类来做成一个p2。
这样我们是否能够拿这两个子类放到一个由父类构成的pair中作为初值。
pair p2(pair());但是如果Derived1 和Derived2反了的话就会失败。
4.另一种例子的成员模板:
template class shared_ptr:public __shared_ptr<_Tp> { ... template explicit shared_ptr(_Tp1* __p) :__shared_ptr<_Tp>(__p){} .... };所以,当智能指针类型十个父类,new了一个子类,这是可以的。
Base1* ptr = new Derived1; //up-cast shared_ptr sptr(new Derived1);也就是说,当我们指向一个人类的父类,那么指向女人也是可以的。
上一篇: img设置背景图