C++/Overloading
2021. 3. 16. 00:25
증감 연산자 오버로딩 (Increment and Decrement Operator Overloading)
++
연산자 오버로딩 예제전위(prefix), 후위(postfix)에 따라 오버로딩 방식이 다르다.
클래스 내에서 정의하는 연산자 오버로딩은 파라미터를 받지 않으면 단항 연산자처럼 앞에 붙는 방식으로 오버로딩된다. (전위)
따라서 후위 연산자를 오버로딩하려면
int
자료형의 더미 변수가 있어야 한다.
#include <iostream> class Digit { int digit_; public: Digit(const int& digit) { digit_ = digit; } // prefix Digit& operator ++ () { ++digit_; return (*this); } // postfix Digit operator ++ (int) { Digit temp(digit_); ++(*this); return (temp); } friend std::ostream& operator << (std::ostream& out, const Digit& d) { out << d.digit_; return (out); } }; int main() { using namespace std; Digit d(5); cout << d << endl; cout << ++d << endl; cout << d++ << endl; cout << d << endl; } /* stdout 5 6 6 7 */
int
대신 다른 자료형으로 바꿔보면 다음과 같은 오류가 발생한다.error C2807: the second formal parameter to postfix 'operator ++' must be 'int'
'C++ > Overloading' 카테고리의 다른 글
C++ 괄호 연산자 오버로딩 (Parenthesis Operator Overloading) (0) | 2021.03.16 |
---|---|
C++ 첨자 연산자 오버로딩 (Subscript Operator Overloading) (0) | 2021.03.16 |
C++ 비교 연산자 오버로딩 (Comparison Operator Overloading) (0) | 2021.03.16 |
C++ 단항 연산자 오버로딩 (Unary Operator Overloading) (0) | 2021.03.16 |
C++ 입출력 연산자 오버로딩 (I/O Operator Overloading) (0) | 2021.03.16 |