在C++中定义虚拟继承的两种不同方式

two different ways of defining virtual inheritance in C++

本文关键字:两种 方式 继承 C++ 定义 虚拟      更新时间:2023-10-16

以下两者之间的语义差异是什么:

class Storable{};
class Transmitter: public virtual Storable{};
class Receiver: public virtual Storable{};
class Radio: public Transmitter, public Receiver{};

与。

class Storable{};
class Transmitter: public Storable{};
class Receiver: public Storable{};
class Radio: public virtual Transmitter, public virtual Receiver{};

第一个表示TransmitterReceiver将共享一个公共的Storable子对象;使得CCD_ 4将仅包含一个。

第二个指示它们将各自具有自己的Storable子对象;使得CCD_ 6将包含两个。(TransmitterReceiver的虚拟继承对Radio没有任何影响;它只会对继承得更远的类产生影响)。