91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++--二階構造模式

發布時間:2020-07-08 06:24:42 來源:網絡 閱讀:320 作者:淡淡_小孩 欄目:編程語言

A.關于構造函數
1.類的構造函數用于對象的初始化
2.構造函數與類同名并且沒有返回值
3.構造函數在對象定義時被自動被調用
Q.問題的出現
1.如何判斷構造函數的執行結果?
2.在構造函數中執行return語句會發生什么?
3.構造函數執行結束是否意味著對象構造成功?
代碼示例

#include <iostream>
using namespace std;

class Test
{
    int mi;
    int mj;
public:
    Test(int i, int j) 
    {
        mi = i;       
        mj = j       
    }
    int getI()
    {
        return mi;
    }
    int getJ()
    {
        return mj;
    }
};

int main()
{  
    Test t1(1, 2);

    cout<<"t1.getI()="<<t1.getI()<<endl;
    cout<<"t1.getJ()="<<t1.getJ()<<endl;

    return 0;
}

運行結果如圖所示
C++--二階構造模式
可知當沒在構造函數添加return返回值時,函數的運行結果是符合預期的,初始化邏輯成功了
當在構造函數添加return時
改動的過程運行的結果如圖所示
C++--二階構造模式C++--二階構造模式
由這次的運行結果我們可以知道,在添加return之后,打印的t1.getJ()的值為隨機值,初始化失敗了,由此可以推測執行到return語句后構造函數結束了
由此可以對之前提出的問題進行了解答
1.構造函數只提供自動初始化成員變量的機會
2.構造函數不能保證初始化邏輯一定成功
3.構造函數執行return語句后構造函數立即結束

半成品對象
半成品對象的概念:初始化操作不能按照預期完成而得到的對象,半成品對象時合法的C++對象,也是Bug的重要來源
二階構造
工程開發中的構造過程可以分為
1.資源無關的初始化操作--不可能出現異常情況的操作
2.需要使用系統資源的操作--可能出現的異常情況,如:內存申請,訪問文件
C++--二階構造模式

#include <iostream>
using namespace std;

class TwoPhaseCons 
{
private:
    TwoPhaseCons() // 第一階段構造函數
    {   
    }
    bool construct() // 第二階段構造函數
    { 
        return true; 
    }
public:
    static TwoPhaseCons* NewInstance(); // 對象創建函數
};

TwoPhaseCons* TwoPhaseCons::NewInstance() 
{
    TwoPhaseCons* ret = new TwoPhaseCons();

    // 若第二階段構造失敗,返回 NULL    
    if( !(ret && ret->construct()) ) 
    {
        delete ret;
        ret = NULL;
    }

    return ret;
}

int main()
{
    TwoPhaseCons* obj = TwoPhaseCons::NewInstance();

    cout<<"obj="<<obj<<endl;//打印出obj的地址

    delete obj;

    return 0;
}

運行結果如圖所示
C++--二階構造模式
小結:
1.構造函數只能決定對象的初始化狀態
2.構造函數中初始化操作的失敗不影響對象的誕生
3.初始化不完全的半成品對象是Bug的重要來源
4.二階構造人為的將初始化過程分為兩部分
5.二階構造能夠確保創建的對象都是完整初始化的

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

高雄县| 玛曲县| 咸阳市| 林西县| 婺源县| 诸暨市| 北票市| 晋州市| 贵德县| 孟州市| 义乌市| 城固县| 辽宁省| 门源| 象州县| 兖州市| 平乐县| 延寿县| 武胜县| 河津市| 萝北县| 临沂市| 沙洋县| 西昌市| 本溪| 蓝田县| 屏山县| 华坪县| 名山县| 四会市| 封丘县| 东平县| 东城区| 淳化县| 光山县| 阿鲁科尔沁旗| 合作市| 奉新县| 沙雅县| 兰考县| 曲松县|