c++ - 具有继承内存存储的对象

标签 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;
     }
};

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

最佳答案

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

The order in which the base class subobjects are allocated in the most derived object (1.8) is unspecified.

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

关于c++ - 具有继承内存存储的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4837480/

相关文章:

python - 使用 ctypes 和 wchar_t 时如何将字符串从 C++ 获取到 python?

c++ - clgetPlatformIDs() 返回 -1001 即使 nvidia.icd 存在并包含 'libcuda.so'

c++ - 在函数入口处将字符串添加到记录器

c++ - Eigen 3.3.0 与 3.2.10 的性能回归?

c++ - 我如何使用 getline infile?

c++ - 是否存在删除了 ctor 的类有用的情况?

C++——关于抛出异常的几个问题

c++ - 如何替换struct c++

c++ - 为什么这个Deque析构函数有内存泄漏

c++ - 阅读 Effective、More Effective 和 Effective Modern C++(和 STL)的首选顺序是什么?