KoreanFoodie's Study

Effective C++ | 항목 10 : 대입 연산자는 *this 의 참조자를 반환하게 하자 본문

Tutorials/C++ : Advanced

Effective C++ | 항목 10 : 대입 연산자는 *this 의 참조자를 반환하게 하자

GoldGiver 2022. 10. 25. 16:06

C++ 프로그래머의 필독서이자 바이블인, 스콧 마이어스의 Modern Effective C++ 를 읽고 기억할 내용을 요약하고 있습니다. 꼭 읽어보시길 추천드립니다!

항목 10 : 대입 연산자는 *this 의 참조자를 반환하게 하자

핵심 :

대입 연산자는 *this 의 참조자를 반환하도록 만들어라

 

C++ 의 대입 연산은 여러 개가 사슬처럼 엮일 수 있다.

int x, y, z;
// 대입은 우측 연관(right-associative)이다.
x = y = z = 15; 

// 따라서 위 식은 실제로 아래와 같다
x = (y = (z = 15)));

대입 연산이 사슬처럼 엮이려면 대입 연산자가 좌변 인자에 대한 참조자를 반환하도록 구현하는 것이 좋다(일종의 관례[convention] 이다). 이는 += , -= 의 경우에도 마찬가지이다.

class Widget
{
  public:
    Widget& operator=(const Widget& rhs)
    {
      // 대입 연산 수행
      ...
      return *this;
    }
    Widget& operator=(const Widget& rhs)
    {
      // 연산 수행
      ...
      return *this;
    }
    Widget& operator=(const Widget& rhs)
    {
      // 연산 수행
      ...
      return *this;
    }
};

 

Comments