C++ 증감 연산자 오버로딩 (Increment and Decrement Operator Overloading)

2021. 3. 16. 00:25·SW개발/C++
반응형

증감 연산자 오버로딩 (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'
반응형
저작자표시 (새창열림)

'SW개발 > C++' 카테고리의 다른 글

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
'SW개발/C++' 카테고리의 다른 글
  • C++ 괄호 연산자 오버로딩 (Parenthesis Operator Overloading)
  • C++ 첨자 연산자 오버로딩 (Subscript Operator Overloading)
  • C++ 비교 연산자 오버로딩 (Comparison Operator Overloading)
  • C++ 단항 연산자 오버로딩 (Unary Operator Overloading)
Caniro
Caniro
  • Caniro
    Minimalism
    Caniro
  • 전체
    오늘
    어제
    • 전체보기 (319)
      • SW개발 (268)
        • Java Spring (6)
        • C++ (186)
        • Python (21)
        • Linux (16)
        • 알고리즘 (13)
        • Git (4)
        • Embedded (1)
        • Raspberrypi (9)
        • React (3)
        • Web (2)
        • Windows Device Driver (6)
      • IT(개발아님) (46)
        • Windows (26)
        • MacOS (7)
        • Utility (11)
      • 챗봇 짬통 (0)
      • 일상 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SunOS 5.1
    그림판
    EXCLUDE
    Windows 11
    제외
    로지텍 마우스 제스처
    스프링 프레임워크 핵심 기술
    unix
    맥북 카카오톡 알림 안뜸
    mspaint
    MacOS
    dism
    SFC
    윈도우 명령어
    Workspace
    logi options
    스프링
    java
    윈도우
    시스템 복구
    Solaris 10
    KakaoTalk
    vscode
    citrix workspace
    windows
    알림
    백기선
    spring
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Caniro
C++ 증감 연산자 오버로딩 (Increment and Decrement Operator Overloading)
상단으로

티스토리툴바