C++解構函式不能失敗的4個理由
解構函式非常特殊,編譯器將在不同的上下文中自動呼叫。由於其特殊性,C++標準有如下建議:在棧展開過程中,如果解構函式拋異常,terminate函式將被呼叫。因此,解構函式應該總是能夠捕獲異常,並且不會讓異常傳播到解構函式之外。(STL中的所有解構函式均不會失敗)。
對於解構函式可能丟擲異常的類,將有如下限制:
- 無法用於函式;當作為臨時變數(物件),在析構時拋異常將導致程式異常終止。
- 不能被繼承:派生類的析構過程也將可能丟擲異常;無法作為全域性或靜態變數。
- 無法用於陣列。陣列無法正確的回滾,行為可能未定義。假如陣列有10個元素,建立時出錯(建構函式拋異常),而回滾時需呼叫解構函式,但此過程有可能出現一個或多個異常。
- 無法用於STL容器中,STL禁止所有一起使用的物件析構時拋異常。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-676662/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於類的建構函式不能為虛擬函式的幾點理由!函式
- 建立函式失敗函式
- C++解構函式C++函式
- C/C++—— C++中建構函式不能是虛擬函式的原因分析C++函式
- C++建構函式解構函式的執行過程C++函式
- [cpp]C++中的解構函式C++函式
- C++的虛解構函式的作用C++函式
- c++建構函式詳解C++函式
- C++中建構函式,拷貝建構函式和賦值函式的詳解C++函式賦值
- C++ 建構函式和解構函式C++函式
- C++箴言:避免解構函式呼叫虛擬函式C++箴言函式
- c++建構函式詳解薦C++函式
- 不使用 JS 匿名函式的三個理由JS函式
- C++ 類建構函式和解構函式C++函式
- C++拷貝建構函式詳解C++函式
- C++ 拷貝建構函式詳解C++函式
- C++初學解惑(4)——建構函式(上) (轉)C++函式
- C/C++—— C++中定義虛解構函式的原因C++函式
- 迴圈單連結串列建構函式、解構函式C++實現函式C++
- 【C++】建構函式C++函式
- C++建構函式C++函式
- C++入門記-建構函式和解構函式C++函式
- [C++]顯示呼叫建構函式和解構函式C++函式
- C++之類解構函式為什麼是虛擬函式C++函式
- C++ 虛解構函式簡單測試C++函式
- 虛解構函式(√)、純虛解構函式(√)、虛建構函式(X)函式
- C/C++——建構函式、複製建構函式和解構函式的執行時刻C++函式
- 建構函式與解構函式函式
- 在函式中執行DDL語句失敗函式
- 分散式事務失敗官方解釋分散式
- 《高質量C++/C程式設計指南》第9章:類的建構函式、解構函式與賦值函式C++C程式程式設計函式賦值
- 關於建構函式與解構函式的分享函式
- 詳解常見的損失函式函式
- C/C++中的new/delete、構造/解構函式、dynamic_cast分析C++delete函式AST
- en_concat函式編譯失敗處理函式編譯
- 高質量C++/C程式設計指南(第9章 類的建構函式、解構函式與賦值函式) (轉)C++C程式程式設計函式賦值
- 例項解釋NLLLoss損失函式與CrossEntropyLoss損失函式的關係函式ROS
- c++ 的學習 建構函式1C++函式