"delete this"를 써도 되나요?
조회수 4794회
new로 생성한 클래스의 인스턴스를 마지막에 지울 때, delete this;
같이 써도 되나요?
이렇게 쓰거나
소스코드1
void doStuff()
{
// this 객체는 working module이고
// 다른 모듈로 바꾸고 싶을 때
controller->setWorkingModule(new OtherModule());
// 이제 Other module이 연산을 하고
// this를 정리함
delete this;
}
아니면 otherClass
에서 this를 대신 죽이게 만들어도 되나요?
소스코드2
void doStuff()
{
otherClass.deleteMe(this); // void deleteMe(void *obj) { delete obj; }
}
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
delete this;
같이 쓰는 것을 suicide(자살)이라고 합니다 객체의 suicide는 주의해서 써야 하는데, The C++ FAQ Lite의 내용을 간단하게 요약하면,1. 객체가 new로 할당되었어야 함(new[]도 안됨)
2. suicide하는 함수가 객체가 마지막으로 호출하는 함수 여야 함
3. 다른 멤버함수가 this 객체를 건드려서는 안됨
4. this 포인터를 delete한 후, this 포인터를 써서는 안됨
을 100% 확신하는 경우에만 써야 합니다.
댓글 입력