继承中的基础 class 是否复制到派生的 class?

Are base classes in inheritance copied to the derived class?

正如标题所说:继承中的基础 classes 被复制到派生的 class 我的意思是像 #include 基础 class 的代码被复制到派生的 class 或仅来自基础 class 的 object 已创建,而 children class 仅在运行时使用?

Are base classes in inheritance copied to the derived class?

不,它们没有被复制。它们本质上合并到派生的 class.

or just an object from the base class is created and the children class just use is it at runtime ?

这个概念描述得最接近,但是:

不,没有 基础 class 的对象是单独创建的 。派生 class 的对象已创建并完全包含其基础 class 功能。

基本上这都是抽象的看待方式。

我认为编译器通过在其计算中包含基类型的定义来计算派生类型的 size 是公平的。所以它为两者分配了足够的内存。

然后构造分配内存的第一部分中的基础class通过调用它的构造函数然后构造派生 class 在分配内存的第二部分使用派生 class 的构造函数。

一天结束时,您最终会得到一大块内存(一个对象),该内存块大到足以容纳基础 class 成员对象和派生的 class 成员对象。生成的每个成员函数都相应地计算了它们的成员变量地址偏移量(从分配的内存开始)。

所以我不认为任何东西实际上是 'copied' 这样的,每个部分都是 构造的 到它分配的内存部分。

两个曲奇模具和一个特大的糕点。

类 是编译器用来挂载代码的编程语言定义。只有实例化的 class 个对象在运行时占用内存 space。

此时,完整对象的class(派生和基础classes)被分配并与实例化对象相关联。

所以,考虑将基classes复制到派生classes是没有意义的,一次为每个对象创建其对应的完整class(派生+基classes) 被分配,当然,每个对象都有自己的实例,并且不与相同 class.

的另一个对象共享基础 classes 成员数据

如果你想强制两个对象共享数据,你必须将它的一些成员定义为指向共享数据的指针。