상속할 가능성이 있는 클래스의 소멸자는 가상 함수로 만들어 주세요. 에를 들어 기본 클래스의 포인터가 그 기본 클래스에서 파생된 클래스의 오브젝트를 가리키고 있는 경우를 생각해 보겠습니다. 기본 클래스의 소멸자가 가상 함수가 아닐 경우, 기본 클래스의 포인터에 대해 delete를 실행하면, 파생 클래스의 소멸자가 호출되지 않습니다. 또한 파생 클래스의 소멸자 안에서 메모리를 해제하는 경우, 기본 클래스의 포인터로부터 delete를 실행해도 메모리 때문에 곤란합니다.
다음과 같이 기본 클래스의 소멸자를 가상 함수로 해두면, 자식 클래스의 소멸자가 호출 됩니다
class Food{
public:
Food();
virtual ~Food();
}
'컴퓨터 과학 & 영상처리 관련 > C / C++' 카테고리의 다른 글
cpp 캐스트 연산자 (0) | 2012.07.10 |
---|---|
템플릿 , 연산자 오버로딩 등 (0) | 2012.07.10 |
오브젝트의 배열을 초기화 (0) | 2012.07.10 |
객체(오브젝트)를 멤버로 가지는 클래스, 함수옆에 : i(10) 이런거(객체 또는 변수 초기화임) (0) | 2012.07.10 |
c++ 정적 멤버 변수 - static, 정적 멤버 함수 (0) | 2012.07.10 |