#include <iostream>
using namespace std;
template<typename T>
class A
{
public:
A(T a)
{
this->a = a;
}
void printA()
{
cout<<"a:"<<a<<endl;
}
protected:
private:
T a;
};
//模板派生是需要具体化模板类 c++编译器需要知道 父类的数据类型具体是什么样的(派生类首先调用父类的构造函数)
//=====》要知道父类所占内存大小是多少,只有数据类型固定下来,才知道如何分配内存
class B:public A<int>
{
public:
B():A(1)
{
this->a = 10;
}
void printA()
{
cout<<"a:"<<a<<endl;
}
protected:
private:
int a;
};
class B2:public A<float>
{
public:
B2():A(1.2)
{
}
protected:
private:
float c;
};
//类模板做函数参数
void UseA(A<float> &a)
{
a.printA();
}
int main()
{
B b;
b.printA();
b.A::printA();
system("pause");
return 0;
}
模板类派生普通类
最新推荐文章于 2023-05-11 10:42:00 发布