C_C++

C++, 멤버함수로 연산자 오버로딩

고니자니 2024. 11. 13. 07:01
반응형

Point 클래스를 C++에서 정의하고, 멤버 함수를 이용해 연산자 오버로딩을 구현하는 예제를 보여드리겠습니다. 이 예제에서는 좌표를 나타내는 Point 클래스를 만들고, 덧셈(+), 뺄셈(-), 그리고 대입(=) 연산자를 오버로딩하여 두 좌표를 더하거나 뺄 수 있도록 합니다.

#include <iostream>
using namespace std;

class Point {
private:
    int x, y; // x, y 좌표

public:
    // 생성자
    Point(int x = 0, int y = 0) : x(x), y(y) {}

    // 연산자 오버로딩 - 덧셈
    Point operator+(const Point& other) const {
        return Point(x + other.x, y + other.y);
    }

    // 연산자 오버로딩 - 뺄셈
    Point operator-(const Point& other) const {
        return Point(x - other.x, y - other.y);
    }

    // 연산자 오버로딩 - 대입 연산자
    Point& operator=(const Point& other) {
        if (this != &other) { // 자기 자신과의 대입을 방지
            x = other.x;
            y = other.y;
        }
        return *this;
    }

    // 출력용 멤버 함수
    void display() const {
        cout << "(" << x << ", " << y << ")" << endl;
    }
};

int main() {
    Point p1(3, 4), p2(1, 2);

    Point p3 = p1 + p2; // 덧셈 연산자 오버로딩 사용
    Point p4 = p1 - p2; // 뺄셈 연산자 오버로딩 사용

    cout << "p1 + p2 = ";
    p3.display();

    cout << "p1 - p2 = ";
    p4.display();

    return 0;
}

(Output)

p1 + p2 = (4, 6)
p1 - p2 = (2, 2)

C++, 멤버함수로 연산자 오버로딩

설명

  • Point 클래스는 (x, y) 좌표를 나타내며, 생성자를 통해 초기화됩니다.
  • operator+와 operator-는 각각 두 좌표의 덧셈과 뺄셈을 수행하며, 새로운 Point 객체를 반환합니다.
  • operator=는 대입 연산자를 오버로딩하여 객체 복사를 가능하게 합니다. 자기 자신과의 대입을 방지하기 위해 if (this != &other)를 사용합니다.
  • display 함수는 좌표 값을 출력합니다.

이렇게 하면 Point 클래스에서 멤버 함수로 연산자 오버로딩을 구현할 수 있습니다.

 

반응형