这段代码为什么是这样的结果?

芒果仔 2010-05-04 10:35:54
#include <iostream>
using namespace std;
class A
{
public:
A (int i)
{
x = i;
}
void dispa ()
{
cout << x << ",";
}
private :
int x ;
};
class B : public A //继承class A
{
public:
B(int i) : A(i+10) { x = i; }
void dispb()
{
dispa();
cout << x << endl;
}
private :
int x ;
};
void main()
{
B b(2);
b.dispb();
}
大家看最后是怎么显示的?
...全文
52 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
芒果仔 2010-05-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 brookmill 的回复:]

楼主想问的是什么?
是想问为什么dispa显示12吗?这个dispa是A类的函数,他看不到B类的x,只能看到A类的x,所以是12
[/Quote]

这样啊,我明白了,我就是不太明白dispa显示的值,非常感谢~~
brookmill 2010-05-04
  • 打赏
  • 举报
回复
BTW,构造函数这样写比较好:
B(int i) : A(i+10), x(i) { }
brookmill 2010-05-04
  • 打赏
  • 举报
回复
楼主想问的是什么?
是想问为什么dispa显示12吗?这个dispa是A类的函数,他看不到B类的x,只能看到A类的x,所以是12
brookmill 2010-05-04
  • 打赏
  • 举报
回复
显示12,2
构造函数里面把A::x初始化为12,B::x初始化为2
dispb首先调用dispa,显示A::x,然后再显示B::x

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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