본문 바로가기
C++/C++

[C++] delete와 소멸자 ~class()

by sihyeong 2022. 10. 13.

간단 요약 :

  • delete() 자체 null 체크 기능 포함
  • delete() 호출 시 메모리 할당 전 개체의 소멸자(~class() )를 호출함

관련한 문제 발생과 해결 과정

1. 템플릿을 사용한 싱글톤 클래스를 생성 후 원하는 곳에 상속시켜 쓸 예정이었음

 

2. 싱글톤 상속 후 메모리 해제 과정(AAA::DestroyInstance() 호출) 중 오류가 남

3. 찾아보니 상속받은 AAA클래스에서 public을 제외한 상속 접근 지정자에서 소멸자(~AAA() )를 정의하면 오류가 남
4. delete 할 때 instance 참조 때문에 접근 지정자에 영향을 받음

5. DestroyInstance() 내부의 delete instance 실행 시 AAA의 ~AAA() / protected 접근 불가

 

해결법 :

상속받은 클래스에서 소멸자 사용 X

상속받은 클래스에서 public: 에서 소멸자 사용

소멸자 사용 X + 소멸자를 대체할 종료함수 사용

 

 

 

 

참고

https://learn.microsoft.com/ko-kr/cpp/cpp/delete-operator-cpp?view=msvc-170

'C++ > C++' 카테고리의 다른 글

[C++] wstring  (0) 2022.11.14
[C++] constexpr  (0) 2022.11.13
[C++] 헤더 / 라이브러리에 관해  (1) 2022.10.11
[C++] 프로젝트 생성 관리  (0) 2022.10.11
[C++] string 관련 참고사항  (0) 2022.10.10