• C++实现单例


    实现代码如下

    #include <iostream>
    using namespace std;
    class Singleon{
    private:
        Singleon(){
        cout<<"调用构造函数了"<<endl;
    }
        static Singleon* instance;
    public:
        static Singleon * getInstance(){
            return instance;
        }
        static Singleon * initInstance(){
            if(instance==nullptr){
                instance=new Singleon();
            }else{
                cout<<"已经创造过对象了,没有再创建"<<endl;
            }
            return instance;
        }
        static void Destory(){
            delete instance;
            instance=nullptr;
        }
    };
    Singleon *Singleon::instance = nullptr;
    int main()
    {
        Singleon *s1=Singleon::initInstance();
        Singleon *s2=Singleon::initInstance();
        Singleon *s3=Singleon::initInstance();
        cout<<s1<<endl;
        cout<<s2<<endl;
        cout<<s3<<endl;
    }
    

    运行结果

    调用构造函数了
    已经创造过对象了,没有再创建
    已经创造过对象了,没有再创建
    0x10120e750
    0x10120e750
    0x10120e750
    Program ended with exit code: 0
    

    值得说明的是,这个是最low的方式,更好的是,还要考虑多线程调用构造函数的事例。

  • 相关阅读:
    4、[重点]Mybatis配置解析
    3、Mybatis的CRUD实现
    mybatis程序容易出错的地方
    1、初识Mybatis
    容易忽略的基础
    读取.properties配置文件的几种方式:
    格式化数字显示
    安装ipa文件
    保活一个线程
    地图经纬度的问题
  • 原文地址:https://www.cnblogs.com/HaoPengZhang/p/11521317.html
Copyright © 2020-2023  润新知