物件和類 二階構造模式

2021-08-20 08:16:40 字數 1044 閱讀 7379

本文參照於狄泰軟體學院,唐佐林老師的——《c++深度剖析教程》

在建構函式的問題裡,我們**了建構函式失敗會造成程式的bug。那麼我們也尋找了幾種解決方案。最後我們發現,無論是拋異常還是用成員變數檢測構造是否成功的方法都太麻煩和無法完全解決物件釋放問題。所以我們需要另尋他路。

需要解決的問題:當資源申請失敗時,主動釋放物件空間,並將物件指向null

思路:

1. 如果我們需要知道資源申請失敗,就需要返回值用於判斷是否成功。根據返回值判斷是否需要釋放資源。

a) 需要返回值,那麼需要使用系統資源的操作。如:記憶體申請,訪問檔案等。這個函式就不能是建構函式,而是乙個普通的成員函式。

b) 而資源無關的初始化操作,可以使用建構函式來初始化,因為並不會產生異常情況。

2. 將建構函式私有化,防止直接建立類物件。

a) 因為初始化並不只有建構函式,還有用於申請資源的函式。單純呼叫建構函式只能產生乙個半成品物件。

b) 那麼私有建構函式如何呼叫呢?靜態成員函式可以呼叫類中的私有成員。

流程圖:

示例**:二階構造初探

#include 

using

namespace

std;

class twoconstruct

bool construct()

public:

static twoconstruct* newconstruct(int length);

int getlength()

};twoconstruct* twoconstruct::newconstruct(int length)

return ret;

}int main()

二階構造模式

我們在建立物件的時候,需要呼叫建構函式,對物件做初始化,但是建構函式是沒有返回值的,無法判斷建構函式的執行結果。如果建構函式執行過程中,發生了異常,導致函式提前返回了,那麼這種情況下,我們建立的物件會處於什麼狀態。1.建構函式確定對物件做初始狀態,物件的建立與建構函式無關,也就是說儲存物件的那片記憶...

二階構造模式

模式 方法。設計模式,就是設計方法。前人證明了的行之有效的方法。建構函式 1.關於建構函式 類的建構函式用於物件的初始化。建構函式與類同名並且沒有返回值。建構函式在物件定義時自動被呼叫。問題 1.如何判斷建構函式的執行結果?2.在建構函式中執行return語句會發生什麼?3.建構函式執行結束是否意味...

二階構造模式

建構函式只決定物件的初始化狀態,不可以決定物件是否建立。如果在建構函式中使用return,則將構造出乙個半成品物件。半成品物件 建構函式沒有全部執行。二階構造 分兩步來構造乙個物件。第一步 與系統資源無關的初始化操作。不會出現異常操作的 include class twophasecons bool...