继承------重点总结

继承方式(父类的私有属性,子类都不可访问;但是被继承了,sizeof时还有其大小,因为被编译器隐藏)
子类公有继承:父类的公有属性或方法在子类中还是公有,保护还是保护。
子类保护继承:父类的公有属性或方法在子类中变为保护,保护还是保护。
子类私有继承:父类的公有属性或方法在子类中变为私有,保护变为私有。
总结:继承的方式可以理解为子类中最低权限,超过此权限的属性和方法,就拉回到最低权限,eg:保护继承,父类所有public拉回到proteste
(1)构造和析构函数不会被继承
(2)子类出现与父类同名属性,使用是默认就近原则。想访问父类,加作用域即可。(同名函数也是这样)

多继承:子类有两个以上的父类(class A:public class B,public class C)
多继承会产生的问题:二义性问题,即两个父类中有相同的属性;
解决方法:加父类的作用域来具体访问哪个父类的属性;



菱形继承:多继承模型上,两个父类来自在同一个爷类。形成菱形;
菱形继承会产生的问题:二义性问题
解决方法:两个父类虚继承爷类,自己形成虚基类;(二义性消失)
虚基类结构:vbptr 虚基类指针(两个父类都有一个)-----指向自己的的虚基类表,找到各自指向唯一属性的偏移量。
发布了38 篇原创文章 · 获赞 13 · 访问量 4329

猜你喜欢

转载自blog.csdn.net/YanWenCheng_/article/details/103946958