9.C++继承
语法:class 子类(派生类):继承方式 父类(基类)
父类中所有非静态成员属性都会被子类继承过去
父类中私有成员属性是被编译器给隐藏了,因此是访问不到 但确实是被继承了(占了内存空间)
page继承basepage
class basepage
{
}
class page:public basepage
{
}
继承的权限
横列为父类中的成员的权限 竖列为继承时的继承权限 表中表示继承后成员的属性情况
公有 保护 私有
公共 公共 保护 不可访问父类的成员
保护 保护 保护 不可访问父类的成员
私有 变私有 变私有 不可访问父类的成员
继承中的构造和析构顺序
子类继承父类后,当创建子类对象的时候也会调用父类的构造函数
父类构造
子类构造
子类析构
父类析构
继承同名成员的处理方式
子类与父类出现同名的成员时
访问子类同名成员-直接访问
访问父类同名成员-加作用域(父类中的重载也要加)
子类与父类出现同名的成员函数时,子类会隐藏父类中所有同名函数
同名的静态成员处理也一样
通过对象访问 子类对象.父类::成员
通过类名访问 子类::父类::成员
多继承语法(开发中不建议使用)
c++允许一个类继承多个类
语法:class 子类:继承方式 父类1,继承方式 父类2,......
菱形继承(钻石继承)
两个派生类继承同一个基类,又有某个类同时继承两个派生类
这个类会继承两个基类 会产生二义性 利用虚继承解决 两个派生类都加virtual关键字
class sheep:virtual public animal
{
};
相当于共享数据 vbptr虚基类指针 指向同一块内存(相同的地址偏移量)
更多推荐



所有评论(0)