반응형
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)
설명
- Point 클래스는 (x, y) 좌표를 나타내며, 생성자를 통해 초기화됩니다.
- operator+와 operator-는 각각 두 좌표의 덧셈과 뺄셈을 수행하며, 새로운 Point 객체를 반환합니다.
- operator=는 대입 연산자를 오버로딩하여 객체 복사를 가능하게 합니다. 자기 자신과의 대입을 방지하기 위해 if (this != &other)를 사용합니다.
- display 함수는 좌표 값을 출력합니다.
이렇게 하면 Point 클래스에서 멤버 함수로 연산자 오버로딩을 구현할 수 있습니다.
반응형
'C_C++' 카테고리의 다른 글
C++, 단항연산자 오버로딩 (전위 후위 연산자) (0) | 2024.11.15 |
---|---|
C++, 프렌드 함수로 연산자 오버로딩 만들기 (0) | 2024.11.14 |
C++, typeid() 클래스 이름 알아내기 (0) | 2024.11.12 |
C++, 순수가상함수 Pure Virtual Function (0) | 2024.11.11 |
C++, 가상 함수의 특징 Features of Virtual Functions (0) | 2024.11.10 |