C++ 스킬8: 대입 연산자는 *this의 참조자를 반환하게 하자. (관례)
A = B = C 와 같이 쓸 수 있다.
C++ 스킬9: operator=에서는 자기대입에 대한 처리가 빠지지 않도록 하자
자원 관리 용도로 사용된 객체 (자원을 가리키는 원시 포인터를 멤버로 갖는 클래스)의 복사 대입 연산자를 구현할 때
왼쪽 객체(this)의 포인터를 delete하고 포인터가 오른쪽 객체(rhs) 의 자원을 가리키도록 하는데, 그 전에 this와 &rhs를 비교하여 같다면 아무 행동도 하지 않게 만들어야 한다.
예외 안정성, 자기대입 안정성을 동시에 가진 operator=를 구현하는 방법
복사 대입 연산자는 인자를 값으로 취하도록 선언하는 것이 가능하기 때문에
객체를 값으로 받은(사본이 생김) 다음 this와 swap하여 구현할 수 있다.
C++ 스킬10: 파생 클래스에서의 복사 생성자와 복사 대입 연산자 함수 안에서 기본 클래스의 복사 생성자와 복사 대입 연산자를 호출하자.
파생 클래스의 복사 생성자 -> 기반 클래스의 복사 생성자 호출
파생 클래스의 복사 대입 생성자 -> 기반 클래스의 복사 대입 생성자 호출
'읽은 책 > Effective C++' 카테고리의 다른 글
8. 소프트웨어 설계 (0) | 2022.04.27 |
---|---|
7. 자원관리 클래스와 스마트 포인터 (0) | 2022.04.27 |
5. 소멸자 (0) | 2022.04.27 |
4. 컴파일러가 자동으로 만들어내는 함수 관리 (0) | 2022.04.27 |
3. 초기화 (0) | 2022.04.27 |