책 정리/Effective C++ 3판
항목 7: 다향성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자
최익필
2008. 5. 31. 15:06
정말 제목이 .. 구체적이다.
이유
1. 다향성을 가진 기본 클래스는 파생클래스의 소멸자도 호출해줌으로써, 메모리릭, 신비한 현상 등을 막을수 있기 때문이다.
주의점
1. virtual 의 비용에 대해서 분명 알고 있어야 한다.
참조링크 : http://ikpil.tistory.com/380
2. 순수 가상 소멸자를 사용한다면, 정의를 꼭 써두어야 한다.
왜냐하면 http://www.kwak101.pe.kr/bbs/view.php?id=kwk_worksBBS&no=159 이기 때문이다.
참조
- 기본 클래스의 가상 소멸자로 인한 파생 클래스의 소멸 시점
1. 기본 클래스의 가상 소멸자 호출
2. 1번으로 부터 파생 클래스의 소멸자 호출
3. 2번으로 부터 기본 클래스의 소멸자 호출
- 순수 가상 소멸자의 호출 매카니즘
1. 파생 클래스의 소멸자 호출
2. 컴파일러가 강제로 순수 가상 소멸자 호출(vtbl에는 순수 가상 함수 0으로 초기화 되어 있기 때문이다!)
관령 링크
http://ikpil.tistory.com/296
http://www.kwak101.pe.kr/bbs/view.php?id=kwk_worksBBS&no=159
http://nbloger.net/2690088
이것만은 잊지 말자!
1. 다형성을 가진 클래스에서만 가상 소멸자를 선언해야 한다!(virtual 의 비용이 들기 때문이다)
2. 순수 가상 소멸자는 꼭 정의해 두어야만 한다!
이유
1. 다향성을 가진 기본 클래스는 파생클래스의 소멸자도 호출해줌으로써, 메모리릭, 신비한 현상 등을 막을수 있기 때문이다.
주의점
1. virtual 의 비용에 대해서 분명 알고 있어야 한다.
참조링크 : http://ikpil.tistory.com/380
2. 순수 가상 소멸자를 사용한다면, 정의를 꼭 써두어야 한다.
왜냐하면 http://www.kwak101.pe.kr/bbs/view.php?id=kwk_worksBBS&no=159 이기 때문이다.
참조
- 기본 클래스의 가상 소멸자로 인한 파생 클래스의 소멸 시점
1. 기본 클래스의 가상 소멸자 호출
2. 1번으로 부터 파생 클래스의 소멸자 호출
3. 2번으로 부터 기본 클래스의 소멸자 호출
- 순수 가상 소멸자의 호출 매카니즘
1. 파생 클래스의 소멸자 호출
2. 컴파일러가 강제로 순수 가상 소멸자 호출(vtbl에는 순수 가상 함수 0으로 초기화 되어 있기 때문이다!)
관령 링크
http://ikpil.tistory.com/296
http://www.kwak101.pe.kr/bbs/view.php?id=kwk_worksBBS&no=159
http://nbloger.net/2690088
이것만은 잊지 말자!
1. 다형성을 가진 클래스에서만 가상 소멸자를 선언해야 한다!(virtual 의 비용이 들기 때문이다)
2. 순수 가상 소멸자는 꼭 정의해 두어야만 한다!