기본 클래스의 소멸자로 인해 클래스가 삭제가 되면 파생 클래스는 소멸되기 때문에 객체의 신세로 바뀌게 된다. 따라서 에러가 발생될 수 있음
이를 해결하기 위해서는 virtual을 포함하여 가상 소멸자를 만들면 이를 해결하면 된다.
기본 클래스가 되는 것을 생각하지 않은 경우 virtual 소멸자를 포함하지 않는다.
virtual 소멸자가 들어 있는 경우 다른 함수를 통해서 해당 부분을 보충하는 내용을 포함시켜야 한다.
*조심 해야하는 부분
- 절대로 표준 컨테이너들을 클래스를 나만의 클래스로 바꾸려는 생각은 해서는 안된다.
- 순수 가상 소멸자를 만드는 경우 소멸자 호출 문제로 걱정을 할 필요가 없음
*중요 사항
- 다형성을 가진 기볼 클래스의 경우 반드시 가상 소멸자를 선언이 필수, 특정 클래스에서 가상 함수를 1개라도 들고 있는 경우 이 클래스의 소멸자는 가상 소멸자여야 함.
- 기본 클래스 혹은 다형성을 가진 클래스가 아니라면 가상 소멸자를 가지고 있으면 안됨.
'More Programmings > Effective C++' 카테고리의 다른 글
항목 9: 객체 생성 및 소멸 과정 중에는 절대로 가상 함수를 호출하지 말자 (0) | 2017.02.26 |
---|---|
항목 8: 예외가 소멸자를 떠나지 못하도록 붙들어 놓자 (0) | 2017.02.19 |
항목6 컴파일러가 만들어낸 함수가 필요 없으면 확실히 이들의 사용을 금해 버리자 (0) | 2015.07.19 |
항목 5 c++가 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자 (0) | 2015.07.19 |
항목4. 객체를 사용하기 전에 반드시 그 객체를 초기화하자. (0) | 2015.07.16 |