【发布时间】:2022-01-17 01:06:33
【问题描述】:
有没有办法写入或至少从编译器添加到 c++ 结构的填充中读取,例如我的编译器将 3 个字节的填充添加到以下结构
struct A {
char a;
int b;
};
【问题讨论】:
-
因为派生类无法访问基类的私有成员。这是我认为的目的之一。
-
@KenZa 派生构造函数的职责是初始化它添加的自身部分。
Derive拥有但Base没有的那些成员。初始化Base部分不是它的责任,已经存在一个构造函数。派生类的实现者不需要知道甚至可以访问Base的实现细节,派生的构造函数甚至可能无法执行Base类所需的初始化。通过始终首先调用Base构造函数,您始终会得到最正确的结果。 -
@KenZa 是的。您可以选择
base中的任何构造函数。 example -
@KenZa 至少会使用 base 中的一个构造函数,是的。不调用任何构造函数有什么目的?只需创建一个不执行任何操作的默认构造函数(隐式或显式),然后您就会拥有该行为。它仍然会被“调用”(概念上),但它什么也不做(除非你有成员变量的默认值)。
-
@KenZa 只要基类有一个构造函数接受你想要的值,没问题:example