回覆列表
-
1 # 13783023606
-
2 # 藍風24
你沒有明確什麼叫“建構函式失敗”。我的理解是:建構函式中某一個執行過程沒有得到你期望的結果。
如果我的理解是你想表達的,那麼建構函式內部的處理是這樣:
1. 建構函式想通知外部自己構造失敗,只有拋異常這一個途徑(沒有返回值);
2. 如果你不拋異常,那麼建構函式執行完畢,從語言層面上編譯器認為該物件是正確構造了的,只有你知道其實構造沒有按預想的進行,所以你需要用狀態變數、建構函式引用引數或什麼其他玩意兒讓外界可以知道構造失敗了。
3. 如果你拋異常標識構造失敗,那麼,所有已經構造好的基類物件和資料成員會按照構造逆序逐個進行析構(基礎資料型別除外,因為它們析構就是什麼都不做)。這裡有一點要注意,如果發生了動態記憶體分配,那需要在拋異常前手動釋放記憶體,否則會有記憶體洩漏。
1、建構函式想通知外部自己構造失敗,只有拋異常這一個途徑(沒有返回值); 2、如果不拋異常,那麼建構函式執行完畢,從語言層面上編譯器認為該物件是正確構造了的,其實構造沒有按預想的進行,所以需要用狀態變數、建構函式引用引數就可以讓外界可以知道構造失敗了。 3.、如果拋異常標識構造失敗,那麼,所有已經構造好的基類物件和資料成員會按照構造逆序逐個進行析構(基礎資料型別除外,因為它們析構就是什麼都不做)。這裡有一點要注意,如果發生了動態記憶體分配,那需要在拋異常前手動釋放記憶體,否則會有記憶體洩漏。 建構函式,是一種特殊的方法。主要用來在建立物件時初始化物件,即為物件成員變數賦初始值,總與new運算子一起使用在建立物件的語句中。特別的一個類可以有多個建構函式,可根據其引數個數的不同或引數型別的不同來區分它們即建構函式的過載。