오늘은 쉬어가는 타임으로 비교적 간단한 주제를 다루려고 한다.
알다싶히 C++의 대입 연산은 여러 개가 사슬처럼 엮일 수 있는 재미있는 성질을 갖고 있다.
x = y = z = 15;
위의 코드는 아래와 같이 우측 연관 연산이라는 사슬로 이어진다.
x = (y = (z = 15));
위와 같은 결과가 나오려면 대입 연산자가 좌변 인자에 대한 참조자를 반환하도록 구현되어있다는 의미이다.
class Widget {
public:
Widget& operator= (const Widget& rhs)
{
return *this;
}
};
위의 class가 = 가 아닌 +=,-=,*= 등 매개변수 타입이 일반적이지 않은 경우에도 동일한 규칙이 적용된다.
오늘은 이것으로 끄웃~ㅎㅎ
'C,C++' 카테고리의 다른 글
[Effective C++] 항목 12 : 객체의 모든 부분을 빠짐없이 복사하자. (0) | 2019.07.30 |
---|---|
[Effective C++] 항목 11 : operator= 에서는 자기대입에 대한 처리가 빠지지 않도록 하자. (0) | 2019.07.25 |
[Effective C++] 항목 9 : 객체 생성 및 소멸 과정 중에는 절대로 가상 함수를 호출하지 말자 (0) | 2019.07.23 |
[Effective C++] 항목 8: 예외가 소멸자를 떠나지 못하도록 붙들어 놓자. (0) | 2019.07.22 |
[Effective C++] 항목 7: 다형성을 가진 기본클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자. (0) | 2019.07.18 |
댓글