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

수민이슈·2023년 3월 17일
0

Effective C++

목록 보기
10/30
post-thumbnail

스콧 마이어스의 Effective C++을 읽고 개인 공부 목적으로 요약 작성한 글입니다!

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


🖊️ 대입 연산자는 좌변 인자에 대한 참조자를 반환한다.

int x, y, z;

x = y = z = 15;

x = (y = (z = 15));

c++의 대입 연산은 여러 개가 사슬처럼 엮일 수 있고, 우측 연관 연산이다.

위 코드에서 세 번째 줄을 보면,
z에 15가 대입되고, 그 대입의 결과로 갱신된 z가 y에 대입된다. y에 대한 대입의 결과로 갱신된 y가 x에 대입된다.

이렇게 되면, 대입 연산자가 좌변 인자에 대한 참조자를 반환 되도록 구현된거다.
이게 관례다.

이걸 직접 정의한다고 생각해보면,

class Widget {
public:
	...
    Widget& operator= (const Widget& rhs) {
    	...
        return *this;
    }
    
    Widget& operator+= (const Widget& rhs) {
    	...
        return *this;
    }
};

모든 기본 제공 타입들과 표준 라이브러리에 속한 타입들이 이렇게 되어 있다.

😊 느낀점

대입 연산자 오버로딩할 때 참고해야겠당!!
this가 자기 자신(호출된 객체)을 가리키는 거고,
*this는 자기 자신의 주소를 반환하는 거니까
그냥 결국,,
자기 자신에 대한 참조자를 반환하는거당
그냥 나를 반환하는거당

참고

0개의 댓글