频道栏目
首页 > 程序开发 > 软件开发 > C++ > 正文
C++中,什么是成员模板?成员模板代码实例
2017-11-09 16:08:46      个评论    来源:qq_29003347的博客  
收藏   我要投稿

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);
也就是说,当我们指向一个人类的父类,那么指向女人也是可以的。

点击复制链接 与好友分享!回本站首页
上一篇:Merge Sorted Array“编程题”
下一篇:C++中的预编译处理方式
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站