以下两者之间的语义差异是什么:
class Storable{};
class Transmitter: public virtual Storable{};
class Receiver: public virtual Storable{};
class Radio: public Transmitter, public Receiver{};
VS
class Storable{};
class Transmitter: public Storable{};
class Receiver: public Storable{};
class Radio: public virtual Transmitter, public virtual Receiver{};
答案 0 :(得分:2)
第一个表示Transmitter
和Receiver
将共享一个共同的Storable
子对象;这样Radio
只会包含一个。
第二个表明他们每个都有自己的Storable
子对象;这样Radio
将包含两个。 (Transmitter
和Receiver
的虚拟继承对Radio
没有任何影响;它只会对继承它的类产生影响。)