簡體   English   中英

打破構造函數中對象的創建

[英]Breaking creation of object in constructor

我班上的構造函數檢查某些條件。 在某些情況下,它應該打破對象的創建。 我應該在那里放置析構函數還是只返回聲明?

它是這樣的:

代碼中的某個地方:

new Obj( string );

和我的構造函數:

Obj::Obj( string ) {
    if( string == "something" ) {
        // should I put this here or only return?
        Obj::~Obj();
        return;
    }
    // ...
}

我知道我可以在創建對象之前檢查條件,但我只是想知道它是否正確(如果沒有內存泄漏),因為它編譯得很好而不會在運行時崩潰。

你也不應該拋出異常。

不會創建任何對象,這是處理這種情況的慣用方法。

您需要在調用上下文(或更高版本)中處理異常。

Obj::Obj( string ) {
    if( string == "something" ) {
        // should I put this here or only return?
        throw ObjectCouldNotBeCreatedException();
    }
}

return語句仍將創建該對象。 為了中斷構造,你應該拋出異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM