1. 程式人生 > >C++筆記 第二十七課 二階構造模式---狄泰學院

C++筆記 第二十七課 二階構造模式---狄泰學院

如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。
學習C++編譯環境:Linux

第二十七課 二階構造模式

1.建構函式的回顧

關於建構函式
類的建構函式用於物件的初始化
建構函式與類同名並且沒有返回值
建構函式在物件定義時自動被呼叫

2.問題

1.如何判斷建構函式的執行結果?沒有辦法
2.在建構函式中執行return語句會發生什麼?建構函式立即返回
3.建構函式執行結束是否意味著物件構造成功?並不意味著構造成功

27-1 異常的建構函式

3.你該知道的真相

建構函式
只提供自動初始化成員變數的機會
不能保證初始化邏輯一定成功
執行return語句後建構函式立即結束

4.真相的意義

建構函式能決定的只是物件的初始狀態,而不是物件的誕生!!

5.半成品物件

半成品物件的概念
初始化操作不能按照預期完成而得到的物件
半成品物件是合法的C++物件,也是Bug的重要來源
難調的Bug:野指標、半成品物件

IntArray 半成品物件的危害

6.二階構造—變成品物件的解決方案

核心:將構造過程一分為二
原理層面:

工程開發中的構造過程可分為
資源無關的初始化操作
不可能出現異常情況的操作
需要使用系統資源的操作
可能出現異常情況,如:記憶體申請,訪問檔案
在這裡插入圖片描述
程式碼層面:
二階構造示例一
在這裡插入圖片描述
二階構造示例二
在這裡插入圖片描述

27-2 二階構造初探

IntArray 陣列類的加強

小結
建構函式只能決定物件的初始化狀態
建構函式中初始化操作的失敗不影響物件的誕生
初始化不完全的半成品物件是Bug的重要來源
二階構造人為的將初始化過程分為兩部分
二階構造能夠確保建立的物件都是完整初始化的