假设我有一些像这个例子的类.
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对象......
在第 10 章“派生类”的介绍中,C++ 标准提到:
基类子对象在最派生对象 (1.8) 中分配的顺序未指定。
因此,在您的示例中,C每个对象都有一个 type 的基类子对象A和一个 type 的基类子对象B,但未指定A基成员位于基成员之前还是之后。B