C++_STL类模板的使用_继承中类模板的使用

本文探讨了C++中类模板在继承场景下的使用,包括父类为普通类、子类为模板类,子类为普通类、父类为模板类,以及两者均为模板类的情况,并给出了相关代码示例。强调了学习编程需要不断复习、总结和实践,通过代数法和绘图辅助理解。同时,作者分享了个人学习心得,认为学习应该聚焦重点,而不是面面俱到,并提醒长时间对着电脑要注意视力保护。
摘要由CSDN通过智能技术生成

继承中类模板的使用

继承中父子类和模板类的结合情况

  1. 父类一般类, 子类是模板类, 和普通继承类似

  2. 子类是一般类, 父类是模板类, 继承时必须在子类里实例化父类的类型参数

  3. 父类和子类都时模板类时, 子类的虚拟的类型可以传递到父类中

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日, (由于疫情的原因)在家里整天坐在电脑前, 眼神逐渐从大到小, 视力也有所大大的下降 ,中午期待打篮球. 写博客,也可自己加强记忆,就当写写日记吧!!!

希望给个赞: 反正你又不亏, 顺便而已

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值