C++中如果子类一个变量与基类的某个变量重名了怎么办

比如:这个调用printfB是输出哪个a,如果想输出另一个a怎么写classA{public:inta;};classB:publicA{public:inta;void... 比如:这个调用printfB是输出哪个a,如果想输出另一个a怎么写
class A
{
public:
int a;
};

class B:public A

{
public:

int a;
void printfB()
{
cout << a;
}

};
展开
 我来答
porker2008
2014-06-25 · TA获得超过1.4万个赞
知道大有可为答主
回答量:7066
采纳率:62%
帮助的人:1.1亿
展开全部

如果B中有同名成员,则会使得父类的同名成员不可见(需要通过名空间访问)


此时函数中的a实际上指B中的a


访问父类中的a需要通过A::来访问

濮震轩U7
2014-06-25 · 超过21用户采纳过TA的回答
知道答主
回答量:56
采纳率:0%
帮助的人:40.8万
展开全部

输出B的a

如果想输出A的a 可以cout<<A::a;

#include<iostream>
using namespace std;

class A
{
public:
    int a;
    A(){a=1;}
};

class B:public A

{
public:
    
    int a;
    B(){a=2;}
    void printfB()
    {
        cout << a  <<endl;
        cout << A::a  <<endl;
    }
    
};
int main()
{
    B b;
    b.printfB();
    return 0;
}
结果:
2
1
Program ended with exit code: 0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
与子如初见
2014-06-25 · TA获得超过1638个赞
知道小有建树答主
回答量:1117
采纳率:100%
帮助的人:795万
展开全部
输出的是b中的,基类的同名成员变量会被隐藏,如果要输出A中的a,使用cout<<A::a;即可。::为作用域运算符,感兴趣可以搜一下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
john_lee1969
2014-06-25 · TA获得超过1700个赞
知道小有建树答主
回答量:419
采纳率:100%
帮助的人:526万
展开全部
输出的是 B::a,如果要输出 A::a,则换成 cout << A::a;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yun010203
2014-06-25 · 超过17用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:33.6万
展开全部
理论上是输出B类中的a。
- -试试声明class B 的成员b。然后cout<<b.a
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式