편집 기록

편집 기록
  • 프로필 알 수 없는 사용자님의 편집
    날짜2018.06.21

    연산자 operator(c++)


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

    오류가 뜨더라구요

    #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함수를 사용한 것까진 이해가 가는데 매개변수 리스트에 주소반환 연산자가 붙은 것들은 어떻게 동작하는지, 또 왜 오류가 발생하는 건지 도무지 모르겠어요.

  • 프로필 김정호님의 편집
    날짜2018.03.08

    연산자 operator(c++)


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

    오류가 뜨더라구요

    #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함수를 사용한 것까진 이해가 가는데 매개변수 리스트에 주소반환 연산자가 붙은 것들은 어떻게 동작하는지, 또 왜 오류가 발생하는 건지 도무지 모르겠어요.