二阶构造模式

3人阅读 评论(0) 收藏 举报
分类:

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

    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++语言学习(五)——二阶构造模式一、构造函数的问题    构造函数存在问题:    A、构造函数只提供自动初始化成员变量的机会    B、不能保证初始化逻辑一定成功,如申请系统资源可能失败    ...
  • A642960662
  • A642960662
  • 2017-03-26 12:49:11
  • 497

第二十七课:二阶构造模式----------狄泰软件学院

一、关于构造函数1.类的构造函数用于对象的初始化 2.构造函数与类名相同并且没有返回值 3.构造函数在对象被创建时自动被调用二、几个问题1.如何判断构造函数的执行结果? 2.在构造函数中执行re...
  • LGC_LG
  • LGC_LG
  • 2017-01-30 16:48:23
  • 772

18、不一样的C++系列--二阶构造模式

构造函数回顾 关于构造函数的回顾 类的构造函数用于对象的初始化 构造函数与类同名并且没有返回值 构造函数在对象定义时自动被调用但是有没有发现,还是存在一些问题? 1、如何判断构造函数的执行结果呢?2...
  • yunkai666
  • yunkai666
  • 2017-06-11 15:28:12
  • 572

c++类的二阶构造

c++类的二阶构造函数主要适用于在构造函数申请系统资源的场景。普通构造函数的作用是初始化对象,若在初始化过程中不能按照程序员预期的进行,那么将会得到一个半成品对象。以下面代码为例:using name...
  • qq_29344757
  • qq_29344757
  • 2017-09-07 11:00:55
  • 503

27- 二阶构造模式

1、2、 答:1、没有方法判断。2、构造函数中执行return语句会正常执行,但是return之后的操作不再进行。3、构造函数执行结束不代表对象构造成功。 可以通过加一个成员初始化成功的状态量来判...
  • zy13270867781
  • zy13270867781
  • 2017-10-27 16:11:18
  • 107

27-二阶构造模式

27-二阶构造模式关于构造函数类的构造函数用于对象的初始化构造函数与类同名并且没有返回值构造函数在对象定义时自动被调用【范例代码】异常的构造函数#include <stdio.h&amp...
  • qq_19247455
  • qq_19247455
  • 2018-04-20 18:05:45
  • 1

lessons_27:二阶构造模式

1. 构造函数分析 构造函数决定的只是对象的初始化,而不是完整对象产生,所以,初始化操作不能按照预期完成而得到的对象,就会产生一个不完整的对象(即半成品对象),半成品对象是合法的的对象,但是不能使用...
  • feiyanaffection
  • feiyanaffection
  • 2018-01-25 09:52:03
  • 29

C++的二阶构造模式

今天学习的是C++中的二阶构造模式,二阶构造模式只是设计模式中的简单的模式,是一种软件设计的方法,并没有我们想象的那么高深,设计模式也是一样,只不过是一系列的设计方法,只要我们懂得了原理,那么一切都是...
  • qq_37375427
  • qq_37375427
  • 2017-12-14 02:22:47
  • 129

C++学习笔记--二阶构造模式

如何判断构造函数的执行结果?在构造函数中执行return语句会发生什么?构造函数执行结束是否意味着对象构造成功? 在一般的构造函数中我们确实无法判断构造函数的执行结果,当我们在函数里添加bool标志虽...
  • tqs_1220
  • tqs_1220
  • 2017-11-26 19:29:27
  • 125

Symbian的二阶段构造机制

  二阶段构造是Symbian中的一个重要的内存处理机制,是Symbian软件开发者所必需掌握的知识。本文通过三个问题及其相应解答来解析Symbian中二阶段的基本原理和使用方法,希望对大家的学习有所...
  • Atoric
  • Atoric
  • 2008-05-26 11:23:00
  • 2339
    个人资料
    等级:
    访问量: 100
    积分: 80
    排名: 155万+
    文章分类
    文章存档