在C++中定义虚拟继承的两种不同方式
two different ways of defining virtual inheritance in C++
以下两者之间的语义差异是什么:
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{};
第一个表示Transmitter
和Receiver
将共享一个公共的Storable
子对象;使得CCD_ 4将仅包含一个。
第二个指示它们将各自具有自己的Storable
子对象;使得CCD_ 6将包含两个。(Transmitter
和Receiver
的虚拟继承对Radio
没有任何影响;它只会对继承得更远的类产生影响)。
相关文章:
- 在C++中将函数压缩为两种方式
- 为什么两种不同的对象初始化方式给出不同的输出
- C++:这两种将数字写入矩阵的方式之间是否存在显着的速度差异?
- 将函数作为参数传递的两种方式之间的区别
- 初始化结构的两种方式
- 在两种情况下,铸造的工作方式不同
- 这两种方式有什么区别吗?
- 由于您可以在C 中以两种方式声明复制构造函数,这是正确的方式
- 定义构造函数的两种不同方式
- 尝试在Qt中连接隐藏信号的两种方式之间做出决定
- C++:如何使用CIN和File两种方式获取输入
- 在C++中定义虚拟继承的两种不同方式
- 为什么这两种访问C++映射对部分的方式不同
- openssl sha256两种计算方式的差异
- 在C++OpenMP中使用蒙特卡罗方法以两种方式计算圆周率
- 在堆栈上声明对象的两种方式之间的差异
- 使用默认构造函数的两种方式的区别
- 声明类实例的两种方式的不同之处
- 用两种不同的方式初始化指针会得到两种结果
- 在这两种包含相同标头的方式之间,编译器中是否发生了不同的事情