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

继承中类模板的使用

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

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

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

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

demo.cpp

#include 

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++_STL类模板的使用_继承中类模板的使用_第1张图片

结语:

学到的知识要, 多复习, 多总结, 多敲. 需要时间的积累, 才能引起质的改变. 自己写不出来的永远是别人的.

分享一下我的技巧: 代数法把具体的数字带进去, 看看能能能找到规律(掌握思想).
还有就是画图, 也很重要. 用笔画出来, 把数代进去, 方法虽然笨, 但真的很实用, 好记忆不如烂笔头!!!

我是小白, C/C++功力…, 你懂得, 写的文章可能不是很好. 如果存在问题, 欢迎大神给予评判指正.
错了不可怕, 可怕的是找不出bug, 谁没错过!!!

最近学操作系统我认为, 学什么都要成本(时间), 即使它是免费的, 我个人认为要挑来学, 挑重点来学, 而不是从头到尾, 除非考试考研.

今日是: 2020年5月9日, (由于疫情的原因)在家里整天坐在电脑前, 眼神逐渐从大到小, 视力也有所大大的下降 ,中午期待打篮球. 写博客,也可自己加强记忆,就当写写日记吧!!!

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

你可能感兴趣的:(STL)