语法:class 子类(派生类):继承方式 父类(基类)
    父类中所有非静态成员属性都会被子类继承过去
    父类中私有成员属性是被编译器给隐藏了,因此是访问不到 但确实是被继承了(占了内存空间)
    
    
    page继承basepage
    class basepage
    {

    }
    class page:public basepage
    {

    }
    
    继承的权限 
    横列为父类中的成员的权限   竖列为继承时的继承权限  表中表示继承后成员的属性情况
            公有      保护      私有
    公共    公共      保护      不可访问父类的成员
    保护    保护      保护      不可访问父类的成员
    私有    变私有    变私有     不可访问父类的成员
    

    
 继承中的构造和析构顺序
    子类继承父类后,当创建子类对象的时候也会调用父类的构造函数
    父类构造
    子类构造
    子类析构
    父类析构
    
 继承同名成员的处理方式
    子类与父类出现同名的成员时 
    访问子类同名成员-直接访问  
    访问父类同名成员-加作用域(父类中的重载也要加)
    
    子类与父类出现同名的成员函数时,子类会隐藏父类中所有同名函数
    
    同名的静态成员处理也一样
    
    通过对象访问  子类对象.父类::成员
    通过类名访问  子类::父类::成员
    
  
 多继承语法(开发中不建议使用)
    c++允许一个类继承多个类
    语法:class 子类:继承方式 父类1,继承方式 父类2,......
    
 菱形继承(钻石继承)
    两个派生类继承同一个基类,又有某个类同时继承两个派生类
    这个类会继承两个基类 会产生二义性  利用虚继承解决 两个派生类都加virtual关键字
    class sheep:virtual public animal
    {
    
    };
    
    相当于共享数据  vbptr虚基类指针 指向同一块内存(相同的地址偏移量)
    

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐