二階構造模式

2022-08-30 13:51:18 字數 1277 閱讀 6065

類的構造模式用於物件的初始化

構造模式與類同名並且沒有返回值

建構函式在物件定義時自動被呼叫

如何判斷建構函式的執行結果?

在建構函式中執行return語句會發生什麼?

建構函式執行結果意味著物件構造成功?

1 #include 2

class

test316

intgeti()

1720

intgetj()

2124

intstatus()

2528

};29

intmain()

3037

return0;

38 }

只提供自動初始化成員變數的機會

不能保證初始化邏輯一定成功

執行return語句後建構函式立即結束

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

初始化操作不能按照預期完成而得到的物件

半成品物件是合法的c++物件,也是bug的重要**。

資源無關的初始化操作,不可能出現異常情況的操作。

需要使用系統資源的操作,可能出現異常情況,如:記憶體申請(new),訪問檔案。

所謂二階構造 就是將物件的構造分為兩個部分

第一部分:與資源無關的初始化,如物件中初始值的設定。

第二部分:與資源有關的初始化,如記憶體資源的申請,檔案的訪問等。

1 #include 2

class

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...