게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
EC++ 질문입니다..
게시물ID : programmer_8296짧은주소 복사하기
작성자 : 매일결심
추천 : 0
조회수 : 367회
댓글수 : 7개
등록시간 : 2015/02/22 12:32:00
옵션
  • 본인삭제금지
Widget& Widget::operator= (const Widget& rhs) {
Bitmap* pOrig = pb; // pb는 this의 포인터 변수
pb = new Bitmap(*rhs.pb);
delete pOrig;
return *this;
}

위 코드가 1) self assignment 와 2) new 연산의 예외에 안전하다.
라고 적혀있습니다.

1은 이해가 되는데 2는 잘 안됩니다.

try {
코드
} catch( std::bad_alloc e ) {
처리
}

이래야 new 연산의 예외에 안전한 거 아닌가요?

pb = new Bitmap(*rhs.pb) 가 bad_alloc throw하고
그 밑에서 delete pOrig; 하면 pb랑 pOrig랑 같은 주소 공유하니까
pb가 가지고 있던 주소가 날아가지 않나요?
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호