#include<iostream>//24
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;
private:
};
//从模板类A 派生普通类B
//模板类派生时需要具体化模板类,c++编译器需要知道父亲的数据类型具体是什么样子的
//所以只有数据类型固定下来才知道父类所占内存的大小
class B:public A<int>
{
public:
B(int a = 0, int b = 0) :A<int>(a)
{
this->b = b;
}
void printB()
{
cout << "a:" << a << "b:" << b << endl;
}
private:
int b;
};
//从模板类派生模板类
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;
}
private:
T c;
};
//类模板做函数参数
//参数,c++编译器要求具体的类,所以要A<int>&a
void UseA(A<int>&a)
{
a.printA();
}
int main()
{
A<int> a1(1);
//a1.printA();
UseA(a1);
B b1(1, 2);
b1.printB();
C<int> c1(1, 2);
c1.printC();
system("pause");
return 0;
}
类模板基本语法(模板类的定义、模板类做函数参数、模板类派生模板类)
最新推荐文章于 2023-03-26 13:35:44 发布