码迷,mamicode.com
首页 > 其他好文 > 详细

二阶构造模式

时间:2019-05-07 19:56:38      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:public   通过   null   clu   include   main   二阶构造   static   style   

构造函数只决定对象的初始化状态,不可以决定对象是否创建。

 

如果在构造函数中使用return,则将构造出一个半成品对象。

半成品对象:

      构造函数没有全部执行。

 

二阶构造:

    分两步来构造一个对象。

    第一步: 与系统资源无关的初始化操作。(不会出现异常操作的)

    第二步: 与系统资源相关的初始化操作。(可能会出现异常操作的。如:申请内存,访问文件)

#include <stdio.h>

class TwoPhaseCons 
{
private:
    TwoPhaseCons() // 第一阶段构造函数
    {   
    }
    bool construct() // 第二阶段构造函数
    { 
        return true; 
    }
public:
    static TwoPhaseCons* NewInstance(); // 对象创建函数
};

TwoPhaseCons* TwoPhaseCons::NewInstance() 
{
    TwoPhaseCons* ret = new TwoPhaseCons();   // 此处调用第一阶段的构造函数 
    if( !(ret && ret->construct()) )          // 此处调用第二阶段的构造函数
    {
        delete ret;
        ret = NULL;
    }        
    return ret;
}

int main()
{
    TwoPhaseCons* obj = TwoPhaseCons::NewInstance();  // 通过类定义的构造函数来构造    
    printf("obj = %p\n", obj);
    delete obj;
    return 0;
}

 

二阶构造模式

标签:public   通过   null   clu   include   main   二阶构造   static   style   

原文地址:https://www.cnblogs.com/zsy12138/p/10827396.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!