• 二阶构造模式


    
    

    1. 构造函数

    ① 类的构造函数用于对象的初始化

    ② 构造函数与类同名并且没有返回值

    ③ 构造函数在对象定义时自动被调用

    2. 一些问题

    ① 如何判断构造函数的执行结构?

    ② 在构造函数中执行return语句会发生什么?

    ③ 构造函数执行结束是否意味着对象构造成功?

    3. 真相

    ① 构造函数只提供自动化成员变量的机会

    ② 构造函数不能保证初始化逻辑一定成功

    ③ 执行return语句后构造函数立即结束

    4. 结论:构造函数能决定的只是对象的初始状态,而不是对象的诞生。(有可能造成半成品对象)

    5. 半成品对象

    ① 初始化操作不能按预期完成而得到的对象

    ② 半成品对象是合法的C++对象,也是Bug的重要来源(和野指针一样重要)

    6. 工程开发中的构造过程可分为

    ① 资源无关的初始化操作:不可能出现异常情况的操作

    ② 需要使用系统资源的操作:可能出现异常的情况,如内存申请,访问文件,系统调用等

    7. 二阶构造流程图

    8. 二阶构造关键代码

    class TwoPhaseCons
    {
    private:
        TwoPhaseCons()
        {
            //第一阶段构造函数
        }
        bool construct()
        {
            //第二阶段构造函数
        }
    public:
        static TwoPhaseCons* NewInstance();
    };
    
    TwoPhaseCons* TwoPhaseCons::NewInstance()
    {
        TwoPhaseCons* ret = new TwoPhaseCons;
        
        if(!(ret != NULL && (ret->construct)))
        {
            delete ret;
            ret = NULL;
        }    
        
        return ret;
    }
  • 相关阅读:
    基于socket的TCP和UDP编程
    (转)基于socket的TCP和UDP编程
    MFC的本质
    Windows程序内部运行机制 转自http://www.cnblogs.com/zhili/p/WinMain.html
    mysql主从切换
    mysql主从不一致解决方法
    postgresql+slony-i安装配置主从
    inndb存储引擎调优
    mysql 锁优化
    NDB Cluster 存储引擎物理备份
  • 原文地址:https://www.cnblogs.com/wulei0630/p/9282691.html
Copyright © 2020-2023  润新知