【发布时间】:2021-03-26 14:58:16
【问题描述】:
考虑以下简单的继承程序
#include <iostream>
class A
{
};
class B : public A
{
};
class C : public B
{
};
int main()
{
C x;
}
现在我的问题是
- 创建了多少对象?一个还是三个?
- 另外,如果是一个对象,是否意味着它会创建一个分层对象?
我想问的是,当我们调用基类的构造函数时,由于我们只有一个对象(从对象的角度)会发生什么? C 对象 x 将拥有的所有内容,以及调用基类的析构函数时删除的所有内容? C的对象是如何分配内存的?
只是为了让大家知道,我明白
当我们创建派生类的对象时,我们最终只有一个对象。
但问题是,派生类对象 c 在内部是否会包装 A 和 B 两个对象,或者,只会将公共/受保护的属性复制到该对象。
下面这行也正确吗?
"当我们在栈上声明一个对象或者先使用 new 时,会保留内存并创建对象,然后执行构造函数,从基构造函数开始,向上到最派生的类?"
【问题讨论】:
-
一个。这取决于您所说的分层是什么意思。
C是一个B,一个B是一个A。 -
在构建
C时,您可以将其视为金字塔,从底部向上构建。破坏则相反。这个问题让我觉得你需要good book。 -
Bookish things 喜欢这样吗?
标签: c++ object inheritance