类模板的继承

时间:2025-01-27 17:31:46

当类模板碰到继承时,需要注意以下几点:
1)当子类继承到父类是一个类模板时,子类在声明时,需要指出父类中T的数据类型。
2)如果不指定,编译器无法给子类分配内存空间
3)如果想灵活指定出父类中T的类型,子类也需要变成类模板。


#include <iostream>
using namespace std;
#include <typeinfo>

//类模板与继承
/*
template<class T>
class Base{
public:

	T m;
};

//1. 当子类继承到父类是一个类模板时,子类在声明时,需要指出父类中T的数据类型。
//class Son:public Base   //错误
class Son:public Base<int>
{   
public:


};

void test01()
{
	Son s;  //如果指定了T是int,那么s就是占用4个字节。
}
*/

//2. 如果想灵活指定出父类中T的类型,子类也需要变成类模板。
template<class T>
class Base{
public:
	T m;  //short m
};

template<class T1,class T2>
class Son:public Base<T2>{
public:
	Son()
	{
		cout << "T1的数据类型" << typeid(T1).name() << endl;
		cout << "T2的数据类型" << typeid(T2).name() << endl;
	}

	T1 obj;  //int obj
};

void test02()
{
	Son<int,short> s;
}

int main(int argc,char *argv[])
{

	//test01();
	test02();

	return 0;
}