반응형
C++에서 단항 연산자 오버로딩은 클래스 내에서 연산자를 재정의하여 객체에 대해 특정 단항 연산(예: ++, --, -, ! 등)을 수행할 수 있도록 하는 기능입니다. 이를 통해 객체에 대해 사용자 정의 연산을 적용할 수 있습니다.
단항 연산자 오버로딩 예제
아래는 ++ 연산자를 오버로딩하는 간단한 예제입니다.
#include <iostream>
using namespace std;
class Counter {
private:
int value;
public:
// 생성자
Counter(int val = 0) : value(val) {}
// ++ 연산자 오버로딩 (전위 연산)
Counter& operator++() {
++value; // 값 증가
return *this; // 증가된 값을 반환
}
// ++ 연산자 오버로딩 (후위 연산)
Counter operator++(int) {
Counter temp = *this; // 현재 상태 저장
++value; // 값 증가
return temp; // 증가 전 값을 반환
}
int getValue() const { return value; }
};
int main() {
Counter c(5);
cout << "Initial value: " << c.getValue() << endl;
++c; // 전위 증가
cout << "After prefix increment: " << c.getValue() << endl;
c++; // 후위 증가
cout << "After postfix increment: " << c.getValue() << endl;
return 0;
}
(Output)
Initial value: 5
After prefix increment: 6
After postfix increment: 7
설명
- 전위 증가 연산자 (++c)
- operator++() 함수는 전위 증가 연산자로, 객체의 값을 먼저 증가시킨 후 그 증가된 값을 반환합니다.
- 반환 타입은 Counter&이며, 증가된 객체 자기 자신을 반환합니다.
- 후위 증가 연산자 (c++)
- operator++(int) 함수는 후위 증가 연산자로, 증가되기 전의 값을 임시 객체에 저장한 후, 실제 객체의 값을 증가시킵니다.
- 반환 타입은 Counter이며, 증가되기 전의 값을 복사한 임시 객체를 반환합니다.
- 매개변수로 int를 받지만, 실제로는 후위 연산임을 구분하기 위한 목적으로 사용됩니다.
이와 같은 방식으로 --, -, ! 등 다른 단항 연산자들도 오버로딩할 수 있습니다.
반응형
'C_C++' 카테고리의 다른 글
C++, 복사생성자 Copy Constructor (0) | 2024.11.17 |
---|---|
C++, 클래스 생성자에서 동적메모리 사용하는 예 (0) | 2024.11.16 |
C++, 프렌드 함수로 연산자 오버로딩 만들기 (0) | 2024.11.14 |
C++, 멤버함수로 연산자 오버로딩 (0) | 2024.11.13 |
C++, typeid() 클래스 이름 알아내기 (0) | 2024.11.12 |