gpt4 book ai didi

c++ - 派生类是否为成员变量分配内存?

转载 作者:行者123 更新时间:2023-11-28 06:39:30 25 4
gpt4 key购买 nike

#include<cstdio>
#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;
}

我有上面的代码。没问题。但是我想知道当我从 A 类继承 B 类时,B 类中声明的成员变量 x 是否也像 A 或 B 类一样只能访问成员变量x 类 A ?
在两个不同的类中是否有两个同名的变量,或者只有一个变量并且两个类的对象都可以访问它?
如果在两个不同的类中有两个具有相同名称的不同变量,那么为什么在声明派生类的对象时调用基类的构造函数?

最佳答案

当你创建一个派生类的对象时,一个基类的子对象被嵌入到派生类对象的内存布局中。因此,对于您的问题,只有一个变量将成为派生对象的一部分。因为,我们在这里只考虑非静态成员,所以每个派生对象都将其基类子对象放置在内存中。当你创建一个基类对象时,它是一 block 不同的内存,代表不同的对象,与之前创建的派生对象无关。

希望它能澄清你的疑问!

这是一本理解 C++ 对象模型的好书:

http://www.amazon.com/Inside-Object-Model-Stanley-Lippman/dp/0201834545/ref=sr_1_1?ie=UTF8&qid=1412535828&sr=8-1&keywords=inside+c%2B%2B+object+model

关于c++ - 派生类是否为成员变量分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26205962/

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