본문 바로가기

C & C++/C++

[C++] virtual 가상함수 (소멸자)

반응형

 

  • 소멸자 virtual을 쓰는 이유는?

상속하고 있는 클래스를 타입이 다른 포인터로 소멸할때 virtual이 없으면 오버라이딩 현상이 적용되지 않아

메모리 해제에 있어 메모리 누수(leak) 발생

 

class classA{
public:
	classA();
	virtual ~classA();
};

 

  • 호출순서로 확인할 수 있는 이유

생성자 호출 순서 ( 1.부모 → 2.자식 )

소멸자 호출 순서 ( 1.자식 → 2.부모 )

 

부모클래스로 소멸자를 호출하였을때 자식클래스의 소멸자가 호출되지 않는 사태를 막기 위해 사용

클래스 상속 , 동적할당시 반드시 사용 할 것을 권장

 

 

 

 

 

생성자 참고

https://coding-house.tistory.com/28

 

[C++] virtual 가상함수 (생성자)

가상함수: 기본 클래스의 멤버함수를 정의할때 그 함수가 가상함수라면, 파생클래스가 상속받았을때 재정의되는 함수 일반 상속관계 class class AAA{ public: void Print() { cout << "AAA Print함수 콜" << end..

coding-house.tistory.com

 

 

 

 

반응형