继承中类模板的使用
继承中父子类和模板类的结合情况
-
父类一般类, 子类是模板类, 和普通继承类似
-
子类是一般类, 父类是模板类, 继承时必须在子类里实例化父类的类型参数
-
父类和子类都时模板类时, 子类的虚拟的类型可以传递到父类中
demo.cpp
#include <iostream>
using namespace std;
/* 继承中父子类和模板类的结合情况 */
/* 1. 父类一般类, 子类是模板类, 和普通继承类似 */
/* 2. 子类是一般类, 父类是模板类, 继承时必须在子类里实例化父类的类型参数 */
/* 3. 父类和子类都时模板类时, 子类的虚拟的类型可以传递到父类中 */
//class B
//{
//public:
// B(int b)
// {
// this->b = b;
// }
//
//private:
// int b;
//};
template <typename T>
class A
{
public:
/* 函数的参数列表使用虚拟类型 */
A(T t)
{
this->t = t;
}
/* 成员函数返回值使用虚拟类型 */
T& get_t()
{
return t;
}
private:
/* 成员变量使用虚拟类型 */
T t;
};
template <typename Tb>
class B:public A<int>
{
public:
B(Tb b) :A<Tb>(b)
{
this->b = b;
}
private:
Tb b;
};
void print_a(A<int>& a)
{
cout << a.get_t() << endl;
}
int main()
{
/* 1. 模板类定义类对象, 必须显示指定类型 */
/* 2. 模板中如果使用了构造函数, 则遵守以前的类的构造函数的调用规则 */
A<int> a(666);
cout << a.get_t() << endl;
B<int> b(888);
cout << b.get_t() << endl;
print_a(a);
print_a(b);
system("pause");
return 0;
}
运行环境: vs2019
运行结果:
结语:
学到的知识要, 多复习, 多总结, 多敲. 需要时间的积累, 才能引起质的改变. 自己写不出来的永远是别人的.
分享一下我的技巧: 代数法把具体的数字带进去, 看看能能能找到规律(掌握思想).
还有就是画图, 也很重要. 用笔画出来, 把数代进去, 方法虽然笨, 但真的很实用, 好记忆不如烂笔头!!!
我是小白, C/C++功力…, 你懂得, 写的文章可能不是很好. 如果存在问题, 欢迎大神给予评判指正.
错了不可怕, 可怕的是找不出bug, 谁没错过!!!
最近学操作系统我认为, 学什么都要成本(时间), 即使它是免费的, 我个人认为要挑来学, 挑重点来学, 而不是从头到尾, 除非考试考研.
今日是: 2020年5月9日, (由于疫情的原因)在家里整天坐在电脑前, 眼神逐渐从大到小, 视力也有所大大的下降 ,中午期待打篮球. 写博客,也可自己加强记忆,就当写写日记吧!!!
希望给个赞: 反正你又不亏, 顺便而已