永发信息网

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

答案:1  悬赏:80  手机版
解决时间 2021-02-21 18:28
  • 提问者网友:低吟詩仙的傷
  • 2021-02-21 11:05
#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部分了么?
最佳答案
  • 五星知识达人网友:我住北渡口
  • 2021-02-21 11:54
的确是这样的,但是
你要注意你重载的+运算,运算符左右都是fuc类生成的对象
但你
s1,s2,s3都是shi类的对象,当然不适用这个+运算,
所以你还需要在shi类中重载一次+运算符,才行。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯