#include<iostream>
using namespace std;
class binary
{
protected:
int num;
public:
binary(int a)
{
num=a;
}
binary operator - (binary b1)
{
binary b(0);
b.num=~(b1.num-1);
return b(b.num);
}
void display()
{
cout<<"Negative is: "<<num;
}
};
int main()
{
int a;
cout<<"Enter no.: ";
cin>>a;
binary b(a);
binary b1=-b;
b1.display();
}
在上面的程序中,它表明重载操作符的返回类型应该是int&amp;形式。任何人都可以向我解释这意味着什么?
答案 0 :(得分:1)
返回类型是错误的吗?是返回b(b.num);
是错误的,它应该只返回对象b
。
你使用unary
重载member function
减去它,因为member function
有this
指针,它应该为零参数,你可以用这个指针得到data member
上课。
binary operator - ()
{
binary b(0);
b.num = ~(this-> num-1);
return b;
}
答案 1 :(得分:1)
您未正确宣布一元operator-
。 operator-
有两种变体:一元和二进制。由于this
隐含在operator-
的左侧,因此一元运算符不需要参数,二元需要右侧的一个参数。因此,您声明了二进制文件operator-
。请尝试以下
binary operator - ()
{
return binary(~(num-1));
}
答案 2 :(得分:0)
binary operator-(binary b1) { ... }
定义了-
类型的两个对象之间的二进制binary
运算符。
能够使用
binary b1=-b;
您需要重载一元-
运算符。这可以使用:
binary operator-() { ... }
我怀疑你想要实现一元-
运算符。您的实施可以使用this
代替b1
。我建议将其作为成员函数const
,因为它不会修改this
对象。
binary operator-() const
{
binary b(~(this->num-1));
return b;
}
这也允许你使用:
binary b1 = -binary(10);
答案 3 :(得分:0)
因为您必须解析整数值 但是在代码返回b(b.num)中给出 而不是它应该是“返回b”。