catch 블록 범위를 벗어날 때 예외 소멸자가 호출됩니까? (우리가 다시 던지 지 않는 경우)비 가상 소멸자 C++
클래스 A가 있고 소멸자가 가상이 아니라고 가정합니다. B는 예외 소멸자 경우에, 캐치 범위를 벗어난다 이동 호출하는 경우 A. 일부 기능은 예외 으로 B 클래스의 객체를 던지고가 캐치 블록
catch(A& a){
...
}
의해 잡힌 가정 상속 이 경우에는 기본 클래스 A의 소멸자 만 호출됩니다.
옥수수 : 두 클래스 소멸자를 호출하여 실시간 평가판 사용 결과.
내 논리와 모순됩니다. 누군가를 설명해 주시겠습니까?
나는이 질문을하는 이유에 약간 관심이있다. 이것은 매우 유효하고 기본적인 질문은 아니지만 예외의 소멸자가 호출 된 시점에 대해 관심이 있다는 것을 나타냅니다. 이는 일반적으로하는 일이 아닙니다. –
어, 그 마지막 부분에 대해 잘 모르겠습니다. –
@ MarcusMüller : 우리가 사용하는 도구에 대한 지식을 얻고 자하는 것이 잘못된 이유는 무엇입니까? –