zoukankan      html  css  js  c++  java
  • 设计模式之单例模式

    bak 类是一个单例类,只能通过静态 getInstance 接口获取bak * 指针。

    将构造函数设置为私有的,可以阻止在类外进行创建对象。

    class bak
    {
    private:
        bak(){}
    public:
        ~bak(){}
        static bak * getInstance()
        {
            if(m_pBak == NULL){
                m_pBak = new bak;
            }
            return m_pBak;
        }
    public:
        void show()
        {
            cout<<" show "<<endl;
        }
    private:
        static bak * m_pBak;
    };
    
    bak * bak::m_pBak = NULL;
    int main(int argc, const char * argv[]) {
        // insert code here...
        std::cout << "Hello, World!
    ";
        bak * pB = bak::getInstance();
        pB->show();
        system("pause");
        return 0;
    }

    构造函数设置为私有可以防止类外创建对象,那么析构函数能不能设置私有? 可以

    析构函数设置为私有,可以防止在类外 删除对象

    class bak
    {
    private:
        bak(){}
        ~bak(){}
    public:
        static bak * getInstance()
        {
            if(m_pBak == NULL){
                m_pBak = new bak;
            }
            return m_pBak;
        }
    public:
        void show()
        {
            cout<<" show "<<endl;
        }
    private:
        static bak * m_pBak;
    };
    
    bak * bak::m_pBak = NULL;
    int main(int argc, const char * argv[]) {
        // insert code here...
        std::cout << "Hello, World!
    ";
        bak * pB = bak::getInstance();
        pB->show();
        delete  pB;
        system("pause");
        return 0;
    }

    结果直接报错

  • 相关阅读:
    ADO数据库操作
    AfxMessageBox和MessageBox区别
    Qt — 子窗体操作父窗体中的方法
    Qt — tableWidget插入复选框
    Qt & MySQL
    windows下安装Qt
    Extjs — Grid数据导出成Excel
    Mac终端 vi/vim 的简单使用
    iOS开发CocoaPods使用说明
    Shell 脚本学习笔记十:Shell输入输出重定向
  • 原文地址:https://www.cnblogs.com/techdreaming/p/5693394.html
Copyright © 2011-2022 走看看