소멸자

소멸자는 객체가 소멸될 때 실행되는 메서드

 

 

특징

1. 오직 한 개 존재(인자 x)

2. 반환타입이 없다.

3. 메소드명이 클래스명과 같다.

 

 

디폴트 소멸자

소멸자가 없어도 기본소멸자가 호출된다.

 

 

명시적 디폴트 소멸자

default를 통해 명시적으로 디폴트소멸자를 사용할 수 있다.

 

 

소멸자 호출

스택에 할당 된 경우에는 스택에서 제거될 때 소멸자가 호출된다.

힙에 할당 된 경우에는 자동으로 제거되지 않는다.

 

 

delete 키워드

delete를 통하여 힙에 할당된 객체의 소멸자 호출이 가능하다.

 

 

댕글링 포인터

소멸자 호출 후 m_iHealth는 할당받은 주소값을 가리키고 있다.

main 함수가 끝나며 player의 소멸자를 호출하고

m_iHealth가 가리키고 있는 주소에 접근해 지울 때 런타임에러가 난다.

 

 

댕글링 포인터 방지

지우기 전에 포인터의 값이 nullptr인지 검사하여 안정성을 높일 수 있다.

 

 

nullptr 객체 소멸

객체가 nullptr일 경우 소멸자가 호출되지 않는다.

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

[C++] const  (0) 2023.05.13
[C++] 복사대입연산자  (0) 2023.05.12
[C++] 복사생성자  (0) 2023.05.11
[C++] 생성자  (0) 2023.05.09
[C++] 오버로딩  (0) 2023.05.08

+ Recent posts