继承的问题

Jack3 2003-11-23 12:29:48
class Base
{
public:
Base()
{
x = 1;
}
int x;
};

class Derive: public Base
{
public:
Derive()
{
x = 2;
}
int x;
};

void main()
{
Derive d;
Base& b = d;
printf("%d, %d, %d", b.x, sizeof(b), sizeof(d));
}

输出什么,说出理由
...全文
80 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
mhcio 2003-12-14
  • 打赏
  • 举报
回复
高~~
chengsion 2003-11-23
  • 打赏
  • 举报
回复
1,4,8
1)d是继承自b的,则d中有两份的数据区,即sizeof(d)为8,而sizeof(b)为4;
2)d在创建的时候 ,自动调动构造函数分别初始化了b的x和d的x,在d中,x已经被重新定义了所以将基类中的x隐藏,执行Base& b = d;时,b得到了它自己的部分数据.

下面的程序
#include<iostream>
#include<stdlib.h>
using namespace std;

class Base
{
public:
Base()
{
x = 1;
}
int x;
};

class Derive: public Base
{
public:
Derive()
{
x = 2;
}
//int x;x继承自基类.
};

void main()
{
Derive d;
Base& b = d;
cout<<b.x<<sizeof(b)<<sizeof(d);
}
结果为2 4 4

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧