类和接口之间的继承顺序是否重要?

Gil*_* PJ 5 c++ inheritance multiple-inheritance

它将使任何区别,我们是否继承了class第一或interfaceC++

例:

class A : public IAbstract, public ClassB
{
};

class A : public ClassB, public IAbstract
{
};
Run Code Online (Sandbox Code Playgroud)

son*_*yao 9

直接基类(即和)的初始化顺序将不同.它由基类说明符列表中的声明顺序决定.ClassBIAbstract

(强调我的)

2)然后,直接基类按从左到右的顺序初始化,因为它们出现在此类的基本说明符列表中

  • @GilsonPJ,C++没有接口的概念,只有一个类.调用没有成员变量的类,只有纯虚函数是一个"接口",这只是一种约定. (5认同)
  • @GilsonPJ我能想到的唯一区别是StoryTeller提到的初始化顺序和对象布局.否则,我觉得没关系. (2认同)

Sto*_*ica 7

是的,对象布局会有所不同.但从功能上来说,它是等价的.

在第一种情况下,对象布局将是这样的:

------
IAbstract members, including vptr
------
Class B members
------
Run Code Online (Sandbox Code Playgroud)

在第二种情况下:

------
Class B members
------
IAbstract members, including vptr
------
Run Code Online (Sandbox Code Playgroud)