亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c++,當構造函數失敗時,構造函數內部怎么處理?

c++,當構造函數失敗時,構造函數內部怎么處理?

MMMHUHU 2019-02-13 20:11:54
c++,當構造函數失敗時,構造函數內部怎么處理?
查看完整描述

2 回答

?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

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

查看完整回答
反對 回復 2019-03-26
?
BIG陽

TA貢獻1859條經驗 獲得超6個贊

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



查看完整回答
反對 回復 2019-03-26
  • 2 回答
  • 0 關注
  • 1260 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號