C++ --继承(菱形继承)

本文详细介绍了C++中的继承概念,包括继承方式、基类与派生类对象的赋值转换、派生类默认成员函数的特性,特别是析构函数、同名隐藏问题以及如何解决。还探讨了菱形继承带来的数据冗余和二义性问题,提出了虚拟继承作为解决方案,并分析了虚拟继承的对象模型和内存布局。
摘要由CSDN通过智能技术生成

一,什么是继承?
继承是类和类之间的关系,是代码复用的重要手段,允许在保持原有类结构的基础上进行扩展,创建的新类与原有的类类似,只是多了几个成员变量和成员函数。

二,继承的方式

class 派生类名 :继承方式 基类名 {};

继承的方式有以下三种:
在这里插入图片描述
需要注意的是:
1,若不表明是以何种方式继承,使用关键字class时默认是私有继承,使用struct关键字时默认公有继承
2,上面的不可访问是指派生类对象不管是在类里还是类外都不能不访问

三,基类和派生类对象赋值转换

1,在public继承的情况下,派生类对象可以赋值给基类对象或基类指针或基类的引用,因为这里它是把一个派生类的对象看成是一个基类的对象,把派生类多的那一部分进行切片操作。
因此当一个基类的指针指向一个派生类的对象时,该指针只能访问基类定义的函数。(多态与此相反。如果基类的此函数声明为virtual类型,那么基类指针指向子类对象,该指针在调用该函数时会调用子类的函数)

2,当父类的对象赋值给派生类的指针时,这是十分危险的,虽然也能通过强制类型转换来进行赋值,但有可能出现越界的问题。

四,派生类的默认成员函数<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值