[英]c++: polymorphism + multiple inheritance order. Is the inheritace order significant?
[英]C++ multiple inheritance order
我试图理解C ++中继承顺序的影响..我在线查看,但我找不到一个明确而充分的答案......
所以,为了这个问题,假设有两个类:B类和C类。
现在,定义:
class A1 : public B, public C{ ... };
class A2 : public C, public B{ ... };
A1和A2有什么区别?
非常感谢!
派生顺序仅与确定构造函数的默认初始化顺序和析构函数清理相关。
除了由构造函数(12.6.2),清理(12.4)和存储布局(9.2,11.1)的初始化语义指定之外,派生的顺序并不重要。 - 尾注]“(§10.1/ 2)
来自IBM的C ++文档: 多重继承
C ++ 11标准说(第10.1节) [class.mi] :
除了由构造函数(12.6.2),清理(12.4)和存储布局(9.2,11.1)的初始化语义指定之外,派生的顺序并不重要。
引用的三个段落揭示了这一点
请注意,内存布局可能很重要。 例如,如果外部库进行天真的C样式转换,假设它感兴趣的对象部分位于开头,则可能导致难以调试的运行时错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.