基类派生类的同名成员变量覆盖问题
#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。
这样理解对吗?求分析这段代码 展开
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。
这样理解对吗?求分析这段代码 展开
2个回答
展开全部
是这个意思,可以再看看虚函数的相关内容可能能理解更深刻一些。
http://www.cnblogs.com/CaiNiaoZJ/archive/2011/08/11/2134673.html
http://www.cnblogs.com/CaiNiaoZJ/archive/2011/08/11/2134673.html
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询