实现代码如下
#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的方式,更好的是,还要考虑多线程调用构造函数的事例。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/601897.html