派生类是不是为继承的变量分配内存,或者它只是访问它?

Posted

技术标签:

【中文标题】派生类是不是为继承的变量分配内存,或者它只是访问它?【英文标题】:Does a Derived Class allocate memory for the inherited variable, or it just gets access to it?派生类是否为继承的变量分配内存,或者它只是访问它? 【发布时间】:2021-10-22 16:47:17 【问题描述】:

// c++ class inheritance
#include<iostream>
using namespace std;

class A

public:
    int x;
;

class B: public A

;
int main()

    B b;
    b.x=5;
    cout<<b.x<<endl;

    return 0;

派生类是否为继承的变量分配内存,或者它只是从基类中访问它??

【问题讨论】:

【参考方案1】:

基类实际上变成了派生类中的一个字段。几乎就像你做的那样:

struct A 
  int i;
;

struct B 
  A __base_a;
;

所以,当您执行b.x 时,几乎就像您执行了b.__base_a.x

这并不完全是这样,但它是一个很好的概念模型。

【讨论】:

【参考方案2】:

变量的内存只分配一次。派生类只是访问它,并通过它自己的可能成员扩展基类。派生类是一个基类,加上它自己的变量。

【讨论】:

以上是关于派生类是不是为继承的变量分配内存,或者它只是访问它?的主要内容,如果未能解决你的问题,请参考以下文章

Java类的加载顺序

java杂项

内存分配崩溃

C++ 继承&多态

无法访问派生类中基类的受保护成员

在 TypeScript 中为具有类型变量的抽象类中的派生类分配泛型类型