正如标题所说:继承中的基类是复制到派生类的,我的意思是像#include
,基类中的代码被复制到派生类,或者只创建基类中的对象,子类只是在运行时使用它?
答案 0 :(得分:2)
继承中的基类是否已复制到派生类?
不,他们没有被复制。它们本质上合并到派生类中。
或者只是创建了基类中的一个对象,而子类只是在运行时使用它?
这个概念描述的最接近,但是:
单独创建基类中没有对象。创建派生类的对象,并完全包含它的基类功能。
答案 1 :(得分:0)
基本上这是看待它的所有抽象方式。
我认为可以说编译器通过在计算中包含基类型的定义来计算派生类型的size
。所以它为两者分配了足够的内存。
然后通过调用其构造函数构造分配的内存的第一部分中的基类,然后使用构造使用已分配内存的第二部分中的派生类派生类的构造函数。
在一天结束时,你会得到一大块内存(一个对象),它足以容纳基类成员对象和派生类成员对象。生成的成员函数各自具有相应计算的成员变量地址偏移量(从分配的内存的开始)。
因此,我认为任何事情都不会被复制并且#39;因此,每个部分构造到其分配的内存部分。
两个饼干切割器和一大块糕点。
答案 2 :(得分:0)
类是编译器用来挂载代码的编程语言定义。只有实例化的类对象才会在运行时占用内存空间。
此时,完整对象的类(派生类和基类)被分配并与实例化对象相关联。
因此,考虑将基类复制到派生类是没有意义的,一旦为每个创建的对象分配了相应的完整类(派生+基类),当然,每个对象都有自己的实例和不会将基类成员数据与同一类的其他对象共享。
如果要强制两个对象共享数据,则必须将其某些成员定义为共享数据的指针。