派生类和继承——(二)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27305031/article/details/54562185
  1. 如果一个类有多个直接基类,而这些直接基类又有一个公共的基类,则在最低层的派生类中保留这个间接的共同基类数据成员的多份同名成员,则会产生二义性。
  2. 虚基类,在从基类派生是,使用关键字virtual将基类说明为虚基类。class 派生类名 :virtual 继承方式 基类名{ };当基类通过多条派生路径被一个派生类继承时,该派生类只继承该基类一次,也就是该基类成员值保留一次。
  3. 虚基类的初始化说明:
    (1)如果虚基类中定义有待形参的构造函数,并且没有定义默认形式的够着函数则整个继承中,所有直接或间接的派生类都必须在构造函数的成员初始化表中列出对虚基类函数的调用,以初始化在虚基类定义的数据成员。
    (2)如果对象中有虚基类继承来的成员,则虚基类的成员是由最远的派生类的构造函数通过调用虚基类的构造函数来初始化的
    (3)若在同一层次同时包含虚基类和非虚基类,应先调用虚基类的构造函数,再调用非虚基类的构造函数,最后调用派生类的构造函数
    (4)对于多个虚基类,构造函数的执行顺序是先左后右,自上而下。
    (5)虚基类的初始化只进行一次。

  4. 基类和派生类对象之间的赋值兼容关系说明:
    (1)派生类对象可以向基类对象赋值
    (2)派生类对象可以初始化基类对象的引用。
    (3)派生类对象的地址可以赋给指向基类对象的指针。
    (4)如果函数的形参是基类对象或者是基类对象的引用,在调用函数时可以用派生类对象作为实参。

  5. 注意:
    (1)声明为指向基类对象的指针可以指向它的公有派生的对象,但不允许指向它的私有派生对象。
    (2)允许讲一个声明为指向基类的指针指向其公有派生类的对象,但是不能将一个声明指向派生类对象的指针指向其基类的一个对象。

猜你喜欢

转载自blog.csdn.net/qq_27305031/article/details/54562185