具有继承内存存储的对象

nik*_*350 5 c++

假设我有一些像这个例子的类.

class A {
     int k, m;
public:
     A(int a, int b) {
          k = a;
          m = b;
     }
};

class B {
     int k, m;
public:
     B() {
          k = 2;
          m = 3;
     }
};

class C : private A, private B {
     int k, m;
public:
     C(int a, int b) : A(a, b) {
          k = b;
          m = a;
     }
};
Run Code Online (Sandbox Code Playgroud)

现在,在C类对象中,变量是以特定方式存储的吗?我知道在POD对象中发生了什么,但这不是POD对象......

Dan*_*ien 2

在第 10 章“派生类”的介绍中,C++ 标准提到:

基类子对象在最派生对象 (1.8) 中分配的顺序未指定。

因此,在您的示例中,C每个对象都有一个 type 的基类子对象A和一个 type 的基类子对象B,但未指定A基成员位于基成员之前还是之后。B