關於建構函式:用於物件的初始化,與類同名並且沒有返回去,物件被定義時自動呼叫。
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 第三次輸出輸出 無警告,無錯...