您的位置:首页 > 游戏 > 游戏 > 小程序商城开发流程_html网页制作代码实例_互联网产品营销策划方案_外贸定制网站建设电话

小程序商城开发流程_html网页制作代码实例_互联网产品营销策划方案_外贸定制网站建设电话

2025/4/7 19:16:58 来源:https://blog.csdn.net/ASCE_Python/article/details/147000884  浏览:    关键词:小程序商城开发流程_html网页制作代码实例_互联网产品营销策划方案_外贸定制网站建设电话
小程序商城开发流程_html网页制作代码实例_互联网产品营销策划方案_外贸定制网站建设电话

单例模式

该示例代码采用C11标准,解决以下问题:

  1. 通过类模板函数实现不同类型单例;
  2. 单例类构造函数支持不同的个数;
  3. 消除代码重复

示例代码

.h文件如下:

//C++11Singleton.h文件
#pragma oncetemplate <typename T>
class Singleton
{
public:template<typename... Args>static T* Instance(Args&&... args){if (m_pInstance == nullptr){m_pInstance = new T(std::forward<Args>(args)...);}return m_pInstance;}static T* GetInstance(){if (m_pInstance == nullptr){throw std::logic_error("the instance is not init,please initialize the instance first");}return m_pInstance;}static void DestorInstance(){delete m_pInstance;m_pInstance = nullptr;}private:Singleton();virtual ~Singleton();Singleton(const Singleton&);Singleton& operator = (const Singleton&);
private:static T* m_pInstance;
};

.cpp文件如下:

#include <iostream>
#include "C++11Singleton.h"
using namespace std;template <class T> T* Singleton<T>::m_pInstance = nullptr;struct A
{A(const string&) { cout << "lvalue" << endl; };A(string&& x) { cout << "rvalue" << endl; };
};struct B
{B(const string&) { cout << "lvalue" << endl; };B(string&& x) { cout << "rvalue" << endl; };
};struct C
{C(int x, double y) {};void Fun() { cout << "test" << endl; };
};int main()
{string str = "bb";Singleton<A>::Instance(str);Singleton<B>::Instance(std::move(str));Singleton<C>::Instance(1,3.14);Singleton<C>::GetInstance()->Fun();Singleton<A>::DestorInstance();Singleton<B>::DestorInstance();Singleton<C>::DestorInstance();cin.get();return 0;
}

输出结果如下:
在这里插入图片描述
以上只是个示例,该单例非模式还不支持多线程调用。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com