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部分了么?