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

+ Recent posts