C++特性——继承

学习C++有一段时间了,今天就来总结一下C++的第二个特性——继承。
首先介绍一下继承的概念,所谓的继承就是用已有的类(基类),根据实际需要定义新的类(派生类)的过程,其实质是代码复用。继承关系如下图所示:
在这里插入图片描述
当然,派生类的数据并不是全部来自于基类,也可以根据需要在派生类中添加额外的成员变量和成员方法。

继承的语法结构: 类标识 派生类类名:继承方式:基类类名

继承方式有3种:public protected private
其中,采用public继承方式的派生类访问不受限制,采用protected继承方式的派生类只允许在本类和子类类中访问,而采用private继承方式的派生类只允许在本类类中访问

说到这里可能会有人产生疑问,是不是派生类的访问限定只跟继承方式有关呢?其实并不是这样的,
不同访问限定符修饰的基类,采用不同的继承方式继承后,其派生类的访问限定也是不一样的。其关系如下图所示:
在这里插入图片描述
继承应该考虑的问题
1、派生类的构造和析构顺秀
系统在创建派生类对象时,会先调用基类的构造函数,用于初始化继承的数据成员,然后再调用派生类的构造函数,用于初始化新增的数据成员。派生类的构造函数总是调用一个基类的构造函数,并使用初始化器列表指明要使用那个基类的构造函数,否则将使用默认的基类的构造函数。
销毁对象时,与调用构造函数的顺序相反,系统会先调用派生类的析构函数,然后再调用基类析构函数。

2、派生类和基类的关系
派生类可以使用基类非私有的方法;
基类指针(或引用)可以不进行显式类型转换的情况下指向(或引用)派生类对象;
基类指针(或引用)只能调用基类的方法,不能调用派生类的方法。

3、继承的范围
派生类****不能通过继承继承基类构造函数、析构函数和赋值运算符
一般,派生类在创建对象时,会使用成员初始化列表调用基类的构造函数,用来创建派生对象的基类部分,否则将使用基类的默认构造函数。在继承链中,每一个类都可以使用成员初始化列表将信息传递给相邻的基类。

派生类在销毁对象时,程序会先调用派生类的析构函数,然后再调用基类的析构函数。如果基类有默认析构函数,编译器将为派生类生成默认析构函数。一般,基类的析构函数设置为虚的。

赋值运算符不能继承的原因是,派生类继承的方法的特征标与基类完全相同,但赋值运算符的特征标随类而异。

总的来说,派生类通过继承继承了基类除构造函数、析构函数赋值运算符之外的所有成员,包括类型和作用域。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值