社区
C++ 语言
帖子详情
继承的问题
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
打赏
收藏
继承的问题
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)); } 输出什么,说出理由
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
Android 官方推荐 : DialogFragment 创建对话框
代码为博客实例代码:http://blog.csdn.net/lmj623565791/article/details/37815413 有
问题
博客留言
钻石
问题
(菱形
继承
问题
) 和虚
继承
钻石
问题
(菱形
继承
问题
) 和虚
继承
转自:http://www.cnblogs.com/sddai/p/6516668.html 在C++中,什么叫做钻石
问题
(也可以叫菱形
继承
问题
),怎么避免它?下面的图表可以用来解释钻石
问题
。假设我们有类B和类C...
C++中的菱形
继承
问题
详解
有了多
继承
,就有菱形
继承
,有了菱形
继承
就有了菱形虚拟
继承
,底层实现很复杂,一般不建议设计出多
继承
,否则在复杂度和性能上可能都会出现
问题
。由多个基类共同派生出新的派生类出新的类,这样的
继承
结构被称为多重...
虚
继承
:解决菱形
继承
问题
羊驼类
继承
的实际是两个虚基类指针 vbptr
C++菱形
继承
问题
和虚
继承
分析
多重
继承
在面向对象中,常常存在这样的事情,一个派生类有两个或两个以上的基类。例如 菱形
继承
二义性 虚基类 虚基类的作用是 在间接
继承
共同基类时只保留一份基类成员。 class A//A 基类 { ... }; //类B是类A的...
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章