c++ Day13

文章介绍了C++中的继承概念,包括派生类的生成步骤,如吸收、改造和新增基类成员。同时讨论了继承的局限,如构造函数、析构函数和特定操作符不能被继承。提到了protected和private继承的区别,并强调了在派生类构造过程中使用基类构造函数初始化的重要性。此外,还概述了set和map这两种容器的特性,set存储唯一元素并自动排序,map存储键值对,键是唯一的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,继承基本概念

面向对象的四大基本特征:抽象,封装,继承,多态。
继承在c++中的理解:从既有类产生新类的过程。
既有类:动物类。父类,基类。
新类:鸟类。子类,派生类。

派生类生成的步骤

1.吸收基类的成员
2.改造基类的成员
3.新增自己的成员
总结:吸收,改造,新增

继承的局限

所有的数据成员是可以被派生类吸收,改造的,但是部分成员函数不行
1.构造函数和析构函数不能被继承。
2.用户重载的operator new/delete/=
3.友元关系不能被继承

总结:无论为何种类型方式继承,派生类除了基类的私有成员不能被访问外i,其它类型成员均能被访问。

protected继承和private继承的区别

protected继承可以无限的继承下去,但是private继承一次就终止。
注意:如果不写继承方式,那么默认的继承方式都是私有的。

二,派生类对象的构造与销毁

重要:为了完成从基类吸收过来的数据成员的初始化,需要存在派生类的构造函数的初始化列表中,借助基类的构造函数完成吸收过来的数据成员的初始化。

派生类的构造函数名(参数列表)
:基类的构造函数(基类构造函数的参数列表)
{
	//派生类的构造函数的函数体
}

2.如果派生类没有显式定义构造函数而基类有显示定义构造函数,则基类必须拥有默认构造函数,因为派生类的构造函数会默认调用基类的默认(无参)构造函数。目的:就是为了完成吸收的数据成员的初始化

总结:在创建派生类对象的时候,为了完成从基类吸收过来的数据成员的初始化,需要使用基类的构造函数,那么最好可以手动在派生类的初始化列表中将基类的构造函数显示的调用出来,这样可以保证代码不出错。

对于多继承而言,每个基类的前面都要写继承方式,否则就按照默认的私有进行继承

1.多基继承(多基派生)成员函数访问冲突
解决方案:使用类名+作用域限定符

set容器:

set的特征:
	1.set中存放的元素是唯一的,不能重复。
	2.默认情况下,会按照元素进行升序排序(从小到大)
	3.set的count和find的作用,count是查找的元素在容器中						       						  	的个数,find是查找元素是否存在,(**注意:显示的是查找的值而不是位置**)

map容器:

map的特征:
	1.存放的是key->value类型,也就是pair类型,key值是唯一的,不嫩重复,但是value值是可以重复的
	2.默认情况下,会按照key值进行升序排序(从小到大)初始化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值