c++ - 我的基地在哪里创建?

标签 c++ inheritance

如果我有:

struct Base
{
};

struct Derived : Base
{
};

然后我在 main 中创建 Derived:

Derived* d = new Derived;

我的基础在哪里(在堆上或堆栈上)创建?我是否正确地推断出 Base 是 Derived 的一部分,因此它是在创建 Derived 的任何地方创建的?还是以其他方式起作用?

最佳答案

基类贡献通常是派生对象的一部分(因此使用对象内存的一部分以及派生部分)。但是,您的示例可能使这无关紧要,因为由于 C++ 空基类优化,基类部分占用的内存为零。

尽管派生出来的结构体也是空的,但最终的对象至少要有一个字节大小,因为所有的对象都要占用空间,才能保证两个不同对象的地址会不同。请参阅:Why is the size of an empty class not zero?了解更多信息。

关于c++ - 我的基地在哪里创建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4059182/

相关文章:

c++ - 函数模板内的 decltype 和范围解析运算符

python - 如何在discord.py中创建自定义的Exception/Error Handler类,该类将处理命令特定的错误?

java - 继承和动态绑定(bind)

c++ - 更改 win32 应用程序标题栏(标题)的颜色

javascript - 使用 Stapes.js 进行继承

c++ - 对象标识符、返回值或变量?

c++ - 使用列表对象内部对象的派生函数

c++ - 什么规范性文本规定类中定义的 friend 只能通过非 ADL 查找在封闭命名空间中声明一次(重新)找到?

c++ - 没有散​​列的无序映射

c++ - 全局静态初始化线程