C++ 연산자 재정의

    [C++] 연산자 재정의 주의 사항

    [C++] 연산자 재정의 주의 사항

    1. 연산자 재정의 문법 주의 사항 int operator+(int a, int b) { return a - b; } // 3 + 2 ? Point operator+(const Point& p, int n) { // ... } // Point operator+(const Point& p, int n, double d) - error // Point operator+(const Point& p, int n = 10) // Point p2 = p1 + ; - error Point p1; Point p2 = p1 + 1; ① 인자가 모두 primitive 타입인 경우는 오버로딩 할 수 없다. => 만약 위와 같이 코드를 짜고 3+2를 하면 1이 나오게 된다? ② 다음의 연산자는 오버로딩 할 수 없다. .* :..

    [C++] 연산자 재정의 (operator overloading)

    [C++] 연산자 재정의 (operator overloading)

    1. 연산자 재정의 기본 개념 #include class Point { int x; int y; public: Point( int a = 0, int b = 0 ) : x(a), y(b) {} }; int main() { int n = 1 + 2; // 3 Point p1(1, 1); Point p2(2, 2); Point p3 = p1 + p2; // ? // operator+(p1, p2) -> operator+(Point, Point) } ① +, -, *, 등의 연산자도 함수로 만들 수 있다. => operator+, operator-, operator* 2. a + b 를 컴파일러가 해석하는 방법 ① a, b가 모두 primitive type (int, double 등) 인 경우 => 일반적인 ..