永发信息网

C++重载运算符继承问题。

答案:1  悬赏:80  手机版
解决时间 2021-02-21 18:28
#include
using namespace std;
class fuc
{
public:
fuc operator+(fuc &f2);
void display();
void input();
private:
int a,b;
};

class shi:public fuc
{
public:
void input2();
private:
int c,d;
};

void shi::input2()
{
cin>>c;
cin>>d;
}

fuc fuc::operator+(fuc &f2)
{
fuc f;
f.a=a+f2.a;
f.b=b+f2.b;
return f;
}
void fuc::input()
{
cin>>a;
cin>>b;
}
void fuc::display()
{
cout< cout<}

int main()
{
fuc f1,f2,f3;
shi s1,s2,s3;
f1.input();f2.input();
f3=f1+f2;
f3.display();
s1.input2();s2.input2();
s3=s1+s2;
f3.display();
return 0;
}

--------------------------------------------------------------
编译时 第53行出现错误 s3=s1+s2; 说
test.cpp(53) : error C2679: binary '=' : no operator found which takes a right-h
and operand of type 'fuc' (or there is no acceptable conversion)
test.cpp(19): could be 'shi &shi::operator =(const shi &)'
while trying to match the argument list '(shi, fuc)'

子类应该是继承了基类的运算符重载了的呀? 如果我把 s3=s1+s2; 改成 f3=s1+s2;
可以编译 但是 下一行 输出 f3 值的时候 却是 很怪的数。 继承运算符重载的详细原理是什么? + 不是已经成为了 子类的 public部分了么?
最佳答案
的确是这样的,但是
你要注意你重载的+运算,运算符左右都是fuc类生成的对象
但你
s1,s2,s3都是shi类的对象,当然不适用这个+运算,
所以你还需要在shi类中重载一次+运算符,才行。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
制备单克隆抗体时用单个的B淋巴细胞与骨髓瘤
电脑谷歌浏览器打不开网页怎么办
利康粮油蔬菜地址有知道的么?有点事想过去
大西洋水产地址有知道的么?有点事想过去
【美国福特级航母】福特号航空母舰的核反应堆
绍兴到河南郑州的大巴,我到淮北,司机说到淮北
都说蛇夫座将出现在十二星座中?准确吗?天蝎
女贞全缘,石楠锯齿,区别对吗
一个人头脑长期不思考问题,会变笨吗
长沙市开福区捞刀河镇大星村民委员会在哪里啊
生活的意义是什么 你对生活有什么看法
很简单的化简比如题,化简比.1.32.5:0.152.2/
淘宝至尊会员要交299元,是不是骗人的
郧西天河国际大酒店最新图片
什么地方可以看妖精的尾巴国语版227集全集?
推荐资讯
为什么重案六组3中的急救号码是999?
nba2k online满级多少
主人公有一把神器剑的网游小说
什么是离散对数解?在加密中, 有一个公式 Y= G
下列对有关实验的变量的叙述,正确的是C。A.
怎么把白糖熬成蜂蜜
王记牛肉面在哪里啊,我有事要去这个地方
请教一个有关NIS客户机修改密码的问题
如果一个男的把一个女的称作神仙姐姐,这代表
最终在雅典确立了民主制的执政官是A. 梭伦B.
东京暗鸦的式神是什么概念没搞懂
淄博高新区石桥街道办事处南营社区居民委员会
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?