[c++] 복합 대입 연산자의 오버로딩
C++에서는 사용자 정의 클래스에 대한 연산자 오버로딩이 가능합니다. 복합 대입 연산자도 오버로딩할 수 있는데, 이를 통해 사용자 정의 클래스에 대한 특정 연산을 정의할 수 있습니다.
복합 대입 연산자란?
C++에서는 +=
, -=
, *=
, /=
등과 같이 두 연산을 합친 형태의 연산자를 복합 대입 연산자(Compound Assignment Operators)라고 합니다. 이러한 연산자를 오버로딩하여 사용자가 정의한 클래스에 대해 원하는 연산을 수행할 수 있습니다.
복합 대입 연산자의 오버로딩 방법
복합 대입 연산자를 오버로딩하기 위해서는 해당 연산자의 함수를 클래스 내에서 다음과 같이 정의합니다.
class MyClass {
public:
MyClass& operator+=(const MyClass& rhs) {
// += 연산을 정의하는 코드
return *this;
}
};
위 예시에서 +=
연산자를 오버로딩하였습니다. 이러한 방식으로 다른 복합 대입 연산자들을 오버로딩할 수 있습니다.
예시
아래는 복합 대입 연산자를 오버로딩한 클래스를 사용하는 예시입니다.
#include <iostream>
class MyNumber {
private:
int num;
public:
MyNumber(int n) : num(n) {}
MyNumber& operator+=(const MyNumber& rhs) {
num += rhs.num;
return *this;
}
void display() {
std::cout << "Number: " << num << std::endl;
}
};
int main() {
MyNumber num1(5);
MyNumber num2(10);
num1 += num2;
num1.display(); // 출력: Number: 15
return 0;
}
결론
C++에서는 복합 대입 연산자를 클래스에 대해 오버로딩하여 해당 클래스의 객체에 대한 특정 연산을 사용자가 정의할 수 있습니다.
이를 통해 사용자는 자신이 정의한 클래스에 대해 더 직관적이고 효율적인 연산을 수행할 수 있게 됩니다.