2 回答

TA貢獻1829條經驗 獲得超7個贊
你沒有明確什么叫“構造函數失敗”。我的理解是:構造函數中某一個執行過程沒有得到你期望的結果。
如果我的理解是你想表達的,那么構造函數內部的處理是這樣:
1. 構造函數想通知外部自己構造失敗,只有拋異常這一個途徑(沒有返回值);
2. 如果你不拋異常,那么構造函數執行完畢,從語言層面上編譯器認為該對象是正確構造了的,只有你知道其實構造沒有按預想的進行,所以你需要用狀態變量、構造函數引用參數或什么其他玩意兒讓外界可以知道構造失敗了。
3. 如果你拋異常標識構造失敗,那么,所有已經構造好的基類對象和數據成員會按照構造逆序逐個進行析構(基礎數據類型除外,因為它們析構就是什么都不做)。這里有一點要注意,如果發生了動態內存分配,那需要在拋異常前手動釋放內存,否則會有內存泄漏。

TA貢獻1859條經驗 獲得超6個贊
1、構造函數想通知外部自己構造失敗,只有拋異常這一個途徑(沒有返回值);
2、 如果不拋異常,那么構造函數執行完畢,從語言層面上編譯器認為該對象是正確構造了的,其實構造沒有按預想的進行,所以需要用狀態變量、構造函數引用參數就可以讓外界可以知道構造失敗了。
3.、如果拋異常標識構造失敗,那么,所有已經構造好的基類對象和數據成員會按照構造逆序逐個進行析構(基礎數據類型除外,因為它們析構就是什么都不做)。這里有一點要注意,如果發生了動態內存分配,那需要在拋異常前手動釋放內存,否則會有內存泄漏。
構造函數 ,是一種特殊的方法。主要用來在創建對象時初始化對象, 即為對象成員變量賦初始值,總與new運算符一起使用在創建對象的語句中。特別的一個類可以有多個構造函數 ,可根據其參數個數的不同或參數類型的不同來區分它們 即構造函數的重載。
- 2 回答
- 0 關注
- 1260 瀏覽
添加回答
舉報