나는 연결리스트의 노드 역할을하도록 설계 클래스에 약간의 작업을 해왔가능한 중복 :
Is it safe todelete this
?"이것을 삭제 하시겠습니까?"나쁜 생각입니까?
, 그리고 내가주는 거라고 생각 클래스 자체의 삭제 기능을 수행하는 관리 클래스와 반대입니다. 그래서 기본적으로는 다음과 같이 진행됩니다
이제void Class::Delete() {
//Some cleanup code before deleting the object
delete this;
}
내가이 테스트를했는데 그것을 잘 작동하는 것처럼 보이지만 내가 객체가 코드를 실행의 중간에 있었던 과거의 문제를 했어, 삭제 그런 다음 분명히 더 이상 존재하지 않는 객체를 사용하여 프로그램을 추락 시켰습니다.
"delete this"는 함수의 끝에 있으므로 분명히 함수를 빠져 나와 잘 작동하지만 이런 종류의 연습은 나쁜 생각입니까? 내가 조심하지 않으면 이것이 내 얼굴에 날아갈 수 있을까?
이렇게하는 것이 좋지만 이전에 발견 한 것처럼 반드시 안전하다고는 할 수 없습니다. 더 이상 객체와 상호 작용할 수 없습니다. 스레드 객체가 실행되고 스스로 죽는 것은 의미가 있습니다. 아무것도 아닐지도 모른다. – Matt