二阶构造模式

    我们在创建对象的时候,需要调用构造函数,对对象做初始化,但是构造函数是没有返回值的,无法判断构造函数的执行结果。如果构造函数执行过程中,发生了异常,导致函数提前返回了,那么这种情况下,我们创建的对象会处于什么状态。

    1. 构造函数确定对对象做初始状态,对象的创建与构造函数无关,也就是说存储对象的那片内存已经完成分配

    2. 如果构造函数出现了异常,提前返回,就会导致对象的状态的不确定性,变成变成半成品对象

    因此,一般构造函数中是不允许有可能产生异常的代码,把可能产生异常的代码,放到第二阶段去完成,这就是二阶构造。

    

     如以下代码(直接写的没有进过编译测试):

class Test{
private:
Test(){
   array  = NULL;
}
bool construc(int length){
   array = new int[length];
   if(array == NULL ){
     return false;
   }
   return ture;
}
public:
int* array;
static Test* NewInstance(int length){
    Test* ret = new Test();
    if(! (ret && ret->construct(length))){
        delete ret;
        ret =  NULL;
    }
    return ret;
}

}

阅读更多
个人分类: c++
上一篇C++ 对象的构造
下一篇C++操作符重载
想对作者说点什么? 我来说一句

二阶数字陷波器

2011年05月26日 139KB 下载

一次二阶矩法程序设计

2009年10月15日 589KB 下载

二阶贝塞尔低通滤波器

2014年01月06日 144KB 下载

二阶多项式拟合(Excel)

2009年04月10日 111KB 下载

二阶有源滤波器参数计算

2012年12月25日 938KB 下载

二阶锁相环参数的选择

2018年05月17日 184KB 下载

二阶锁相环Matlab程序及其FPGA程序

2017年07月05日 31.04MB 下载

二阶常微分方程PPT

2009年10月14日 303KB 下载

没有更多推荐了,返回首页

关闭
关闭