二阶构造模式

Posted zsy12138

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二阶构造模式相关的知识,希望对你有一定的参考价值。

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

 

如果在构造函数中使用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;
}

 

以上是关于二阶构造模式的主要内容,如果未能解决你的问题,请参考以下文章

二阶构造模式

二阶构造模式(二十一)

第27课二阶构造模式(上)---------出现的背景

二阶构造模式/数组类的完善

二阶构造 操作符[]重载

在 Visual Studio 中创建构造函数的代码片段或快捷方式