마이너스 (-), 증가 (++) 등을 사용하여 단항 연산자 오버로딩에 대해 읽었습니다. 나는 연습용으로 똑같은 코드를 작성하려고 생각했다. 그러나 그것을 실행하려고했을 때 마이너스와 증분 연산자 모두에 오류가 발생했다. 문제는 내가 메인에서 연산자를 호출하는 방법이라고 생각한다. 누구든지 제발 이 일을하는 올바른 방법은 무엇입니까?C++에서 단항 연산자 오버로드가 어렵습니까?
#include<iostream>
using namespace std;
class c{
int x;
int y;
public:
c(int a,int b){
x=a;
y=b;
}
void operator -(){
x=x+1;
y=y+1;
}
void display(){
cout<<x<<" "<<y<<"\n";
}
};
int main()
{
c obj(2,3);
obj.display();
obj- ; //I think the error is on this line
obj.display();
return 0;
}
obj-를 -obj로 대체하면 코드가 올바르게 작동합니다. 왜 그렇게됩니까? 같은 + + 연산자 오버로드 문제가 있습니다 (++ obj 잘 작동하지만 obj ++ 작동하지 않습니다), 왜?
감사합니다.
오버로드 된 연산자는 값을 반환해야합니다. http://stackoverflow.com/questions/4421706/operator-overloading –
@ThomasMatthews를 참조하십시오. 오버로드 된 운영자에게 가치를 반환해야하는 언어가 아닌 * 관례 *가 명확합니다. 과부하가 걸린 운영자가 '무효'를 반환하는 것은 완벽하고 가능합니다. 그렇게하는 것은 합법적이며 운영자의 특정 용도를 배제합니다. –