항목 11: operator=에서는 자기대입에 대한 처리가 빠지지 않도록 하자
·
STUDY/Effective C++
Widget w; w= w; //자기대입 a[i] = a[j]; //자기대입 가능성이 큼 중복참조로 인해 자기대입이 발생하는경우들이 있다. 자기대입이 발생하게되면 자원관리를 제대로 못할 수 있고 자원관리는 곧 프로그램 자체와 밀접하게 관련이 있다. Widget& Widget::operator=(const Widget& rhs) { delete pb; // 현재 비트맵 사용을 중지 pb = new Bitmap(*rhs.pb); //rhs비트맵을 사용하도록 함 return *this; } 여기서 *this와 rhs가 같은 객체일 가능성이 있다. 만약 그렇다면 rhs의 객체까지 delete가 적용되어 해당 Widget객체는 자신의 포인터멤버를 통해 가리키던 객체가 삭제되는 상태가 발생하게된다. Widget& ..