本文主要是介绍类模板派生出普通类和类模板派生出子类模板,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
(1) 类模板派生出普通类:
#include <iostream>
using namespace std;//A编程模板 类
//模板类 类型参数化//类模板的定义
//类模板的使用
//类模板 做函数参数//模板类
template <class T>
class A
{
public:A(T a){this->a = a;}
public:void printA(){cout << "a: " << a << endl;}
protected:T a;
};//从模板类 派生了 普通类
// 模板类派生时, 需要具体化模板类. C++编译器需要知道 父类的数据类型具体是什么样子的
//=====> 要知道父类所占的内存大小是多少 只有数据类型固定下来,才知道如何分配内存
class B : public A<int>
{
public:B(int a = 10, int b = 20) : A<int>(a){this->b = b;}void printB(){cout << "a:" << a << " b: " << b << endl;}protected:
private:int b;
};void main()
{B b1(1, 2);b1.printB();system("pause");
}
(2) 类模板派生出子类模板
#include <iostream>
using namespace std;//A编程模板 类
//模板类 类型参数化//类模板的定义
//类模板的使用
//类模板 做函数参数//类模板
template <class T>
class A
{
public:A(T a){this->a = a;}
public:void printA(){cout << "a: " << a << endl;}
protected:T a;
};//从模板类 派生 模板类template <typename T>
class C : public A<T>
{
public:C(T c, T a) : A<T>(a){this->c = c;}void printC(){cout << "c:" << c << endl;}
protected:T c;
};void main()
{C<int> c1(1, 2);c1.printC();system("pause");
}
这篇关于类模板派生出普通类和类模板派生出子类模板的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!