C++의 대입 연산은 여러 개가 사슬처럼 엮일 수 있는 재미있는 성질을 갖고 있습니다.

 

int x, y, z;

x = y = z = 15;
 
위의 구현은
일종의 관례이고, 클래스에 대입 연산자가 혹시 들어간다면 이 관례를 지키는 것이 좋습니다.
 
1
2
3
4
5
6
7
8
9
10
11
12
class Widget
{
    public:
     /**
      * (= 뿐만아니라 +=, -=, *=, /= 등 *this를 반환하도록 만든다.)
      */
    
     Widget& operator=(const Widget& rhs)
     {
        ...
        return *this;
     }
};
 
 
이관례는 모든 기본제공 타입들이 따르고 있을뿐만 아니라, 표준 라이브러리에 속한 모든  타입 ( string, vector, complex, tr1::shared_ptr 등) 에서도 따르고 있다는 점을 무시 못할 것입니다.
 
 
 이것 만은 잊지 말자!

◆ 대입 연산자는 *this의 참조자를 반환하도록 만드세요.


+ Recent posts