類的構造模式用於物件的初始化
構造模式與類同名並且沒有返回值
建構函式在物件定義時自動被呼叫
如何判斷建構函式的執行結果?
在建構函式中執行return語句會發生什麼?
建構函式執行結果意味著物件構造成功?
1 #include 2class
test316
intgeti()
1720
intgetj()
2124
intstatus()
2528
};29
intmain()
3037
return0;
38 }
只提供自動初始化成員變數的機會
不能保證初始化邏輯一定成功
執行return語句後建構函式立即結束
建構函式能決定的只是物件的初始狀態,而不是物件的誕生。
初始化操作不能按照預期完成而得到的物件
半成品物件是合法的c++物件,也是bug的重要**。
資源無關的初始化操作,不可能出現異常情況的操作。
需要使用系統資源的操作,可能出現異常情況,如:記憶體申請(new),訪問檔案。
所謂二階構造 就是將物件的構造分為兩個部分
第一部分:與資源無關的初始化,如物件中初始值的設定。
第二部分:與資源有關的初始化,如記憶體資源的申請,檔案的訪問等。
1 #include 2class
twophasecons39
//第二階段建構函式
10bool
construct()
1114
public:15
//物件建立函式
16static twophasecons*newinstance();
17};
18//
內部靜態成員函式直接訪問私有成員是合法的
19 twophasecons*twophasecons::newinstance()
2030
return
ret;31}
32int
main()
33
小結:
建構函式只能決定物件的初始化狀態
建構函式中初始化操作的失敗不影響物件的誕生
初始化不完全的半成品物件是bug的重要**
二階構造人為的將初始化過程分為兩部分
二階構造能夠確保建立的物件是完整初始化的
二階構造模式
我們在建立物件的時候,需要呼叫建構函式,對物件做初始化,但是建構函式是沒有返回值的,無法判斷建構函式的執行結果。如果建構函式執行過程中,發生了異常,導致函式提前返回了,那麼這種情況下,我們建立的物件會處於什麼狀態。1.建構函式確定對物件做初始狀態,物件的建立與建構函式無關,也就是說儲存物件的那片記憶...
二階構造模式
模式 方法。設計模式,就是設計方法。前人證明了的行之有效的方法。建構函式 1.關於建構函式 類的建構函式用於物件的初始化。建構函式與類同名並且沒有返回值。建構函式在物件定義時自動被呼叫。問題 1.如何判斷建構函式的執行結果?2.在建構函式中執行return語句會發生什麼?3.建構函式執行結束是否意味...
二階構造模式
建構函式只決定物件的初始化狀態,不可以決定物件是否建立。如果在建構函式中使用return,則將構造出乙個半成品物件。半成品物件 建構函式沒有全部執行。二階構造 分兩步來構造乙個物件。第一步 與系統資源無關的初始化操作。不會出現異常操作的 include class twophasecons bool...