我的基地在哪里创建?

The*_* do 2 c++ inheritance

如果我有:

struct Base
{
};

struct Derived : Base
{
};
Run Code Online (Sandbox Code Playgroud)

我创建了Derived in main:

Derived* d = new Derived;
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*eyn 5

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

尽管派生结构也是空的,但最终对象的大小必须至少为一个字节,因为所有对象都必须占用空间,以确保两个不同对象的地址不同.请参阅:为什么空类的大小不为零?了解更多信息.