웹 서핑 중에 간단히 잘 정리된 사이트를 찾아서 가물가물 하던 터에 한번 정리해봤다.
Assignment Operator =
MyClass& operator=(const MyClass& rhs)
{
// check for self-assignment
if (this == &rhs) return *this;
// 어쩌구 저쩌구
return *this;
}
자기를 자기 자신에게 대입(self-assignment)하는지 검사하는 버릇을 들여야 한다. 메모리 할당, 해제를 하는 클래스는 self-assignment 검사를 안 해주면 저기서 안 죽고 엉뚱한 곳에서 터지는 버그로 고생할 수 있다. 프로그램이 저기서 잘 죽어 주기만을 빌어야 한다.
리턴 값이 const-reference가 아니라서 좀 이상할 수 있는데, 이딴 식의 대입을 지원하기 위해서이다. primitive type은 다 이런 대입을 지원하니, 내가 정의한 클래스도 지원해주도록 한다.
MyClass a,b,c; (a=b)=c;



