27 二階構造模式

2021-08-19 18:08:29 字數 1473 閱讀 6555

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

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

沒有辦法,

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

可以存在return語句,遇到return會立即返回,後邊的語句不會執行。

3、建構函式執行結束是否意味著物件構造成功?

不完美的解決方法:

#include

class test

int geti()

int getj()

int status()

};int main()

return 0;

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

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

工程開發中的初始化操作可分為:資源無關的初始化操作,不可能出現異常情況的操作。

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

將構造過程一分為2,資源無關第一階段,資源有關第二階段。

class twphasecons //第一階段建構函式

bool construct()    //第二階段建構函式,資源訪問操作

public:

static twophasecons* newinstance(); // 物件建立函式

twophasecons* twophasecons::newinstance()

return ret; }

完整程式:

#include

class twophasecons 

bool construct() // 第二階段建構函式

public:

static twophasecons* newinstance(); // 物件建立函式

};twophasecons* twophasecons::newinstance() 

return ret;

}int main()

;#endif

#include "intarray.h"

intarray::intarray(int len)

bool intarray::construct()

return ret;

}int intarray::length()

bool intarray::get(int index, int& value)

return ret;

}bool intarray::set(int index, int value)

return ret;

}intarray::~intarray()

delete a;    

return 0;  }

總結:建構函式只能決定物件的初始化狀態,建構函式中初始化操作的失敗不影響物件的誕生,二階構造初始化分為兩部分,確保建立的物件都是完整初始化的。

27 二階構造模式

範例 異常的建構函式 include class test int geti int getj int status int main int argc,const char argv return 0 工程開發中的構造過程可分為 二階構造示例 class twophasecons bool con...

lessons 27 二階構造模式

建構函式決定的只是物件的初始化,而不是完整物件產生,所以,初始化操作不能按照預期完成而得到的物件,就會產生乙個不完整的物件 即半成品物件 半成品物件是合法的的物件,但是不能使用,也是bug的重要 對於建構函式而言 1 只提供自動初始化成員變數的機會 2 不能保證初始化邏輯一定成功 3 執行retur...

C 27 二階構造模式

答 test 1.cpp include class test int geti int getj int main 第一次輸出輸出 無警告,無錯誤 t1.mi 1 t1.mj 16068596 第二次輸出輸出 無警告,無錯誤 t1.mi 1 t1.mj 4145140 第三次輸出輸出 無警告,無錯...