如果我有:
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/