永发信息网

c++中二义性问题

答案:3  悬赏:70  手机版
解决时间 2021-02-26 07:01
#include <iostream.h>
class A
{
protected:
void f() { cout<<"a f"<<endl; }
};

class B : public A
{
public:
A::f;
void f() { cout<<"b f"<<endl; }
};

class C : public B
{
public:
void f() { cout<<"c f"<<endl; }
};

void main()
{
C c;
c.B::f();
}
请问,怎样调用B类中的另一个f函数?
不用以下方法:
void g() { A::f(); }
最佳答案
明枪易躲,暗箭难防。C++提供了方案来解析不同的名字,但是再怎么也算不过人非要让它产生二义性。建议如果你的方向不是做编译器的话,就避免思考此类问题。我只能说,如果现在这么去“算计”的话,将来会有更多精力花在这类问题了,不是很好。子类的默认虚函数参数无法被应用到基类指针的解引用调用上,无法通过指向类虚函数的指针加上域限定符来调用基类的函数(不通过指针就可以),什么时候用&什么时候不用&,也不是正交的。当然,如果涉及到模板,问题会更多。C语言为了效率而作出的很多规则,对正交性是不利的,可写性越强,可读性反倒越差。C++在这样的基础上,又为了效率和可写性,推出了太多的概念,使问题更复杂了。不要停留在这些细节上。
全部回答
虚函数。。 说的问题很模糊啊。。
b. 初看题目,答案应该在bc之间. 我就只解释错误的了. 假设: 基类中有方法void cool(int i) 派生类中也有方法void cool(int i) 实际运行中派生类的cool方法会覆盖基类中的同名方法. 因为基类的cool方法并没有消失,仍然可以通过其他途径调用. 所以,这样编写代码时很容易造成混淆(二义性).
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
现代伊兰特更换刹车片多少钱?
练祁3518创意园我想知道这个在什么地方
打开两个excel表格怎么重叠在一起
阮裕焚车 翻译吾有车而使人不敢借,何以车为?
上虞至杭州千岛湖长途汽车车票多少
靓仔童装在哪里啊,我有事要去这个地方
龙布针蜂贴,这膏药有用吗有用过抹药老方的吗
消化管的哪个部位吸收能力最强A. 小肠B. 胃C.
17岁的女生真人照片
电场能和电能,电势能有什么区别?
三国战记2盖世英雄 献帝玉佩 燃龙三节棍 如何
湖北宏远棉业地址有知道的么?有点事想过去
作文题目:走进南少林寺空间顺序
周记快修在什么地方啊,我要过去处理事情
那个炉石的随从说邪灵退散
推荐资讯
茂名金菱电梯销售公司在哪里啊,我有事要去这
乡缘来面食NO.1地址有知道的么?有点事想过去
给男友唱什么歌好
白辛庄村在哪里啊,我有事要去这个地方
南义村地址在什么地方,想过去办事
孩子不愿意和父母交流心声,做父母的应该怎样
离昆明进点的春节假期好玩的地方去哪
为什么耐克616775-105看着那么像AF1的鞋
小腿上长了红色的出血点!
2016中茶红印铁饼 值得收藏吗
怎么将做好的公司名字贴在玻璃上?
下雨天可以爬华山吗?天气预报是小到中雨转中
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?