1. 개요
C++의 대입 연산자는 여러개가 동시에 엮일 수 있습니다.
무슨말인가 하면
우리는 일반적으로 대입연산자를 a=3; 이런식으로 씁니다.
그러나 a=b=c=3; 이런식으로 쓰는것도 가능하다는 말입니다.
우측 부터 연산이 진행되는 연산자입니다.
위의 연산을 괄호를 쳐서 본다면 이렇게 됩니다.
a=(b=(c=3));
c에 3대입되고 그 결과가 b에 대입되고 다시 그 결과가 a에 대입됩니다.
이러한 연산이 가능하려면 연산자가 좌변에 대한 참조자를 반환하도록 구현되어 있어야 합니다.
2. 다른것들은?
좌변 객체의 참조자를 반환하자는 규칙은 = 뿐만 아니라 다른 경우에도 지켜져야 합니다.
예를들면 += -= *= 등과같은 연산고 *this를 반환하게 하는것이 관례입니다.
이 관례는 모든 기본제공 타입들이 따르고 있습니다.
또한 string, vector, complex, shared_ptr등 모든 곳에서 따르고 있습니다.
결론은 *this를 꼭 반환하자!
이것만은 잊지 말자!
- 대입 연산자는 *this의 참조자를 반환하도록 만드세요.
항목 11
https://yeoul0714.tistory.com/39
[Effective C++] 항목 11: operator=에서는 자기대입에 대한 처리가 빠지지 않도록 하자
1. 개요자기대입은 어떤 객체가 자기 자신에게 대입 연산을 실행하는 것을 말합니다. 예를 들면 이런것이죠 Yeoul y; y=y; 문법상 아무 문제가 없는 코드입니다. a[i] = a[j]; i와j가 같아지면 자기대입
yeoul0714.tistory.com
'Effective C++ > Chapter 2: 생성자, 소멸자 및 대입 연산자' 카테고리의 다른 글
[Effective C++] 항목 12: 객체의 모든 부분을 빠짐없이 복사하자 (0) | 2025.04.25 |
---|---|
[Effective C++] 항목 11: operator=에서는 자기대입에 대한 처리가 빠지지 않도록 하자 (0) | 2025.04.23 |
[Effective C++] 항목 9: 객체 생성 및 소멸 과정 중에는 절대로 가상 함수를 호출하지 말자 (0) | 2025.04.21 |
[Effective C++] 항목 8: 예외가 소멸자를 떠나지 못하도록 붙들어 놓자 (0) | 2025.04.19 |
[Effective C++] 항목 7: 다형성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자 (0) | 2025.04.18 |