Advertisement

虚继承

阅读量:

一. 虚基类的声明:

1. 虚继承:

在类的层次结构定义中,在两个派生类型(Derived1和Derived2)都各自包含一个基类子对象(Base)。其中一种情况是类型A作为这两个派生类型的共同继承者(superclass),它会包含两个这样的基类子对象(Base)。一个是存储在类型Derived1中的实例副本(instance copy),另一个则存储在类型Derived2中的实例副本。然而,在这种情况下如果希望类型A能够同时引用两个相同的Base实例副本(同一个状态记录),而不必维护多个状态记录,则传统继承机制无法满足需求;

class Base {};

class Derived1 : public Base {};

class Derived2 : public Base {};

class A : public Derived1, public Derived2 {};

为了满足Derived1与Derived2共享同一个状态,使用虚继承机制:

一种机制是实现虚继承。各类通过该机制表明它们希望共享其虚拟基类的状态。对于任何一个给定的虚拟基类,在其派生层次中作为虚拟基类出现多次时,并非每次都单独继承一个真实对象;而是仅会继承一个共享的真实对象(或称为实例),这个共享的真实对象被称为这个虚拟基类。

在访问派生列表时,在标号处采用关键字virtual可用于指

全部评论 (0)

还没有任何评论哟~