基类派生类的同名成员变量覆盖问题

#include<iostream>usingnamespacestd;classA{public:inta;A(intaa=1){a=aa;}voidprint(){c... #include <iostream>
using namespace std;

class A {
public:
int a;
A(int aa = 1) { a = aa;}
void print() {
cout<<a<<endl;
}
};

class B: public A {
public:
int a;
B( int bb = 2 ) { a = bb; }

};

int main() {
B tp;
tp.print();
cout<<tp.a<<endl;
return 0;
}

如上代码,输出结果是1 2.
这段代码应该怎么理解?

我目前的理解是这样:内存中存着两个a,基类的和派生类的。当调用创建的是派生类,所以当输出tp.a,就是派生类的a。当条用print函数时,因为调用的是基类的函数,所以输出的就是基类的a。否则派生类的a覆盖了基类的a。
这样理解对吗?求分析这段代码
展开
 我来答
mafangsan
2014-02-25 · TA获得超过1.2万个赞
知道大有可为答主
回答量:1万
采纳率:71%
帮助的人:2573万
展开全部
你的理解基本很对了。基类的那个print只能访问基类的 a,访问不到派生类的 a的。
百度网友cfdc8356c
2014-02-26
知道答主
回答量:13
采纳率:0%
帮助的人:6.9万
展开全部
是这个意思,可以再看看虚函数的相关内容可能能理解更深刻一些。
http://www.cnblogs.com/CaiNiaoZJ/archive/2011/08/11/2134673.html
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式