gpt4 book ai didi

c++ - 派生类中的数据元素

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:04:06 24 4
gpt4 key购买 nike

我的问题与派生 C++ 类的对象的内存状态有关。在此示例中,派生类继承了一个公共(public)成员函数,该函数操作一个私有(private)成员。

class Base {
int a;

public:
int b;
void write_a(int a_in);
int read_a();
};
void Base :: write_a(int a_in){
a = a_in;
}
int Base :: read_a(){
return a;
}

class Derived : public Base {
int c;

public:
void write_c(int c_in);
int read_c();
};
void Derived :: write_c(int c_in){
c = c_in;
}
int Derived :: read_c(){
return c;
}


int main(){

Derived D;
D.write_a(3);
cout << D.read_a() << endl;
}

程序打印“3”。理想情况下,对象 D 应该只有“b”和“c”作为其数据变量。但是,从程序看来它也在存储“a”。派生类对象D的内存是如何组织的?

最佳答案

object D should have only 'b' and 'c' as its data variables

没有。 Inheritance 的创建只是为了防止编码器重复代码,例如你有一段代码并且该代码应该在两个不同的类中,然后你创建一个 Base 类并且将那段代码放到基类中,而不是将相同的代码写两次。因此,派生类包含基类。

it appears that it is storing 'a' too. How is the memory organized for the derived class object D?

是的 Derived 类也在存储 a 自然 a 占用一些内存(因为 a 是一个 int ,它的大小取决于您的系统架构)但是 Derived 类无法访问那部分内存。这是protected的地方关键字进来了。

关于c++ - 派生类中的数据元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53838261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com