继承特性专题:
11. private、public、private继承
private继承使得:基类的public和protect成为派生类的private
protect继承使得:基类的public和protect成为派生类的protect成员
public继承使得:基类的正常不变传到派生类。
12. c++类的默认继承方式是什么?
默认是private继承
13. 类中的保护成员有谁能进行访问?
- 类本身可以访问保护成员
- 派生类也可以访问保护成员
- 只有类外不能够访问保护成员
同理可推导其他权限的成员的访问权限。
14. 继承和组合之间的关系?试着阐述各自应用场景。
参考网址:[]:https://zhuanlan.zhihu.com/p/108250464
继承是基类派生出派生类,而组合是一个类引用一个类生成另一个类
- 从性质、二者关系上看:继承是Is-a的关系,特殊与一般的关系 ; 组合是Has-a 关系 是整体与部分的关系。
- 从接口上看,继承可以提供基类的接口,而组合隐藏了引用类的接口
一句话总结:写代码多用组合少用继承
15. 什么是菱形继承?菱形继承有什么问题?如何解决?
定义:两个子类继承同一个父类,而又有子类同时继承这两个子类。从画图来看像一个菱形
问题:二义性
解决方法:
1.域运算符访问
2.虚基类继承
16. 描述或绘画派生类继承的构造函数的调用顺序。虚析构函数呢?
17.虚基类是什么?最远派生类是什么?
虚基类指通过虚继承进行派生的基类。
最远派生类:在派生体系中派生到最底层的类
18. 单继承,多继承,菱形继承,虚继承时,对象内存中的差异区别?如果存在虚函数呢?
可以通过画图理解。
19. 友元函数能在类内定义吗?在哪里声明?
参考博客[]:https://blog.csdn.net/qq_44631615/article/details/110722797
首先友元函数不属于类的成员,但是它可以访问类内成员,因此我们称它破坏了类的封装性和隐藏性。
友元函数必须在类内声明,尽量在类外定义。
友元函数不受访问权限关键字的影响,容易造成问题,所以我们一般将它设为const 只能访问不能修改
20.多重继承和菱形继承的内存分布是如何的?
首先多重继承也叫多级继承,派生类在实例化时会伴随基类的实例化,从而创建属于基类的对象(可以通过派生类访问)
21.虚基类的实现原理
派生类在继承了虚基类时继承了虚基类指针,然后通过虚基类表的偏移量去访问直接,间接的基类。
22.虚基类表与虚函数表的区别
虚函数表记录的是类中函数的地址和继承得到的函数地址以及重写后的函数地址。
而虚基类表则是记录了偏移量。根据偏移量可以访问到间接与直接基类。
23.
本文来自博客园,作者:快乐过了阈值,转载请注明原文链接:https://www.cnblogs.com/black-worrior-2000/p/16565070.html
墨愁前路无知己,天下谁人不识君。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)