3月24日
一、继承
1、继承的好处:减少重复代码
2、语法:class 子类:继承方式 父类{ };
3、子类也称为派生类,父类也称为基类。
4、派生类中的成员包含两大部分:
1)从基类中继承过来的 (共性)
2)自己类增加的成员 (个性)
6、继承方式:public、protected、private
1)公共继承:
父类中的私有成员不可访问继承,其余部分均可继承,且访问权限不变,父类中为public就为public,为protected就为protected;
2)保护继承
父类中的私有成员不可访问继承,其余部分均可继承,且访问权限全部变为protected;
3)私有继承
父类中的私有成员不可访问继承,其余部分均可继承,且访问权限全部变为private;
7、继承中的对象模型
1)对像模型所占用的大小
2)可以利用vs开发人员命令提示工具查看对象模型
8、继承中构造和析构的顺序
9、继承同名成员处理方式
如果子类父类出现同名成员,如何通过子类对象访问到子类或父类的同名数据呢?
访问子类同名成员,直接访问即可;
访问父类同名成员,需要加作用域。
10、继承中同名静态成员处理方式
与其他同名处理方式基本一致、
11、多继承语法
c++允许一个类继承多个类
语法: class 子类:继承方式 父类1,继承方式 父类2…
多继承可能引发父类中有同名成员出现,需要加作用域区分
12、菱形继承
两个派生类继承同一基类,又有某个类同时继承这两个派生类,这种继承被称为菱形继承,或者钻石继承。
用开发者工具看该类:
vbptr:虚基类指针 :v-virtual,b-base,ptr-pointer
其指向一个vbtable :虚基类表
虚继承时,子类拿到的只是一个指针而已,(即只继承了一个指针,指针通过偏移量可以找到那份数据)真正的数据只有一份。