标签:class member second template pair ptr 模板 first
一、成员模板的概念
类模板中有个member,它自己也是一个 template,就叫成员模板
二、示例代码
class Base1{};
class Derived1:public Base1 {};
class Base2{};
class Derived2:public Base2 {};
template<class T1, class T2>
struct pair
{
typedef T1 first_type;
typedef T2 second_type;
T1 first;
T2 second;
pair() : first(T1()), second(T2()) {}
template<class U1, class U2>
pair(const pair<U1, U2>& p)
: first(p.first), second(p.second) { }
};
template<typename T>
class shared_ptr
{
public:
template<typename Tp1>
explicit shared_ptr(Tp1 *ptr)
: px(ptr) { }
private:
T* px;
};
void test_member_template()
{
//父类的 pair p2 里面能放置子类的对象。
pair<Derived1, Derived2> p;
pair<Base1, Base2> p2(p);
//父类的指针指向子类对象
Base1 *ptr = new Derived1; //up-cast
shared_ptr<Base1> sptr(new Derived1);//模拟//up-cast
}
标签:class,member,second,template,pair,ptr,模板,first 来源: https://blog.csdn.net/qq_35487883/article/details/113553248
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。