2010-08-05 44 views
-2

可能重複:
throwing exceptions out of a destructor當我在C++析構函數中拋出異常時會發生什麼?

在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 2010-08-05 04:08:39

+0

我看不到任何意圖。誰知道它是否應該工作。 – 2010-08-05 04:25:28

回答

0

此代碼是否按預期工作?

您是否嘗試過自己運行它?也看看this FAQ - 據說,是的,它會在你的簡單情況下工作,但總的來說,你不應該這樣做。同樣,這取決於你如何定義「按預期工作」 - 程序運行時沒有錯誤,但是你可能會泄漏內存,因爲對象沒有被釋放。

相關問題