【问题标题】:C++ Object creation in case of inheritance在继承的情况下创建 C++ 对象
【发布时间】:2021-03-26 14:58:16
【问题描述】:

考虑以下简单的继承程序

#include <iostream>
class A
{
};
class B : public A
{
};
class C : public B
{
};
int main()
{
    C x;
}

现在我的问题是

  1. 创建了多少对象?一个还是三个?
  2. 另外,如果是一个对象,是否意味着它会创建一个分层对象?

我想问的是,当我们调用基类的构造函数时,由于我们只有一个对象(从对象的角度)会发生什么? C 对象 x 将拥有的所有内容,以及调用基类的析构函数时删除的所有内容? C的对象是如何分配内存的?


只是为了让大家知道,我明白

当我们创建派生类的对象时,我们最终只有一个对象。

但问题是,派生类对象 c 在内部是否会包装 A 和 B 两个对象,或者,只会将公共/受保护的属性复制到该对象。

下面这行也正确吗?

"当我们在栈上声明一个对象或者先使用 new 时,会保留内存并创建对象,然后执行构造函数,从基构造函数开始,向上到最派生的类?"

【问题讨论】:

  • 一个。这取决于您所说的分层是什么意思。 C 是一个 B,一个B 是一个 A
  • 在构建C 时,您可以将其视为金字塔,从底部向上构建。破坏则相反。这个问题让我觉得你需要good book
  • Bookish things 喜欢这样吗?

标签: c++ object inheritance


【解决方案1】:
  1. 只会创建一个class C 类型的对象。
  2. 所以基本上在这种情况下,首先调用基类的构造函数,然后调用派生类的构造函数。最后,派生类的对象也包含基类的内容。

【讨论】:

    【解决方案2】:

    创建了一个C 类型的对象,其中包含ABC 的所有成员。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-17
      • 1970-01-01
      • 2016-05-12
      • 2015-02-01
      • 1970-01-01
      相关资源
      最近更新 更多