我们首先继承class
还是interface
继承C++
会不会有什么不同?
示例:
class A : public IAbstract, public ClassB
{
};
class A : public ClassB, public IAbstract
{
};
答案 0 :(得分:9)
initialization order直接基类(即bookmark
和ClassB
)将有所不同。它由基类说明符列表中的声明顺序决定。
(强调我的)
2)然后,直接基类按从左到右的顺序进行初始化,因为它们出现在此类的基本说明符列表中
答案 1 :(得分:7)
是的,对象布局会有所不同。但从功能上来说,它是等价的。
在第一种情况下,对象布局将是这样的:
------
IAbstract members, including vptr
------
Class B members
------
在第二种情况下:
------
Class B members
------
IAbstract members, including vptr
------