2010-08-05 3 views
-2

가능한 중복 :
throwing exceptions out of a destructorC++ 소멸자에서 예외를 throw하면 어떻게됩니까?

는 C++에서 우리는 소멸자에서 예외가 발생해서는 안됩니다. 이 코드는 의도 한대로 작동합니까?

struct a 
{ 
    ~a() { } 
}; 
struct b : public a 
{ 
    ~b() 
    { 
     throw 1; 
    }; 
}; 
bool c() 
{ 
    a* d=new b; 
    try 
    { 
     delete d; 
    } 
    catch(int e) 
    { 
     return e; 
    } 
    return false; 
} 
+1

코드를 조금 더 포맷하려고하면 읽기가 어렵습니다. – Anycorn

+0

의도가 표시되지 않습니다. 그게 일하기로되어 있는지 누가 알 겠어. –

답변

0

의도 한대로이 코드가 작동합니까?

직접 실행 해 보셨습니까? 또한 this FAQ을 살펴보십시오. 예, 간단한 경우에는 작동하지만 일반적으로는 안됩니다. 다시 말하지만, "의도 한대로 작업"을 정의하는 방법에 달려 있습니다 - 프로그램은 오류없이 실행되지만 객체가 해제되지 않았기 때문에 메모리가 누출 될 수 있습니다.

관련 문제