struct Foo
{
virtual void Stop() = 0;
virtual ~Foo() { Stop(); }
};
struct Goo : Foo
{
virtual void Stop() override final {
// pure virtual function call
}
};
간단한 코드로 순수 가상 함수 호출 예외(pure virtual function call)를 재현할 수 있다. 부모 클래스가 오버라이딩된 함수를 호출할 때 자식 클래스의 인스턴스가 이미 파괴된 경우가 그러하다.
위의 코드로 보면 Foo 클래스의 소멸자가 호출되는 시점은 이미 Goo 클래스의 인스턴스가 파괴된 이후이다. 따라서 부모 클래스의 소멸자에서 오버라이딩된 함수를 호출하는 일이 없도록 주의해야 한다.
'코드' 카테고리의 다른 글
WSL에서 AWS에 있는 도커 이미지 내려받아 실행하기 (0) | 2024.12.19 |
---|---|
The Grid Search (0) | 2021.10.28 |
Non-Divisible Subset (0) | 2021.10.25 |
2110번: 공유기 설치 (acmicpc.net) (0) | 2021.09.14 |
하노이의 탑 (0) | 2021.08.04 |