연산자 operator(c++)

조회수 812회

예제를 가지고 검색해가면서 공부하려 했는데

오류가 뜨더라구요

#if 1
#include <iostream>
using namespace std;

class A {
    int aa;
public:
    A() {
        aa = 10;
    }
    int operator+(int x) {
        return aa - x;
    }
    int operator+(A &r) {
        return aa - r.aa;
    }
    int operator-(int x) {
        return aa + x;
    }
    friend int operator+(int x, A &r) {
        return r.aa - x;
    }
    friend int operator-(int x, A &r) {
        return r.aa + x;
    }
    int operator++() {
        return aa--;
    }
};
int main() {
    A a;
    A b;
    cout << a + 10 << endl;
    cout << a - 10 << endl;
    cout << 10 + a << endl;
    cout << 10 - a << endl;
    cout << a + b << endl;
    cout << ++a << endl; // a=a+1
    cout << a++ << endl; // a / a=a+1
}
#endif

매개변수 개수를 맞춰주려고 friend함수를 사용한 것까진 이해가 가는데 매개변수 리스트에 주소반환 연산자가 붙은 것들은 어떻게 동작하는지, 또 왜 오류가 발생하는 건지 도무지 모르겠어요.

  • 조심스럽게 댓글남깁니다. 매개변수 개수를 맞춰주려고 friend함수를 사용한 거까지 이해하셨으면, 맨 마지막 a++에 관해서는 구현 안하셨으니 오류나는게 아닐까요? 알 수 없는 사용자 2018.3.9 12:38
  • 아 원래 a++부분은 주석처리되어있었는데 글 작성 중에 지워진 것 같네요 죄송합니다.. 프로젝트 속성에 준수모드를 아니오로 변경하니 갑자기 정상적으로 작동하더라구요. 어쨌든 감사합니다^^ 김정호 2018.3.9 21:27

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)