ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++ 单例

2021-12-27 16:31:18  阅读:143  来源: 互联网

标签:Singleton const GetInstance C++ static 单例 拷贝


        众所周知,网上一直流传着,不知道叫什么的单例,乱七八糟写啥的都有。不是报错就是内存泄露的,没一点实用的。全是半瓶水晃荡,瞎几把写。 那么今天就写一个。

        单例就是始终保持一个实例。 在C++ 中实现,我们就只要注意两点。哪里两点? 拷贝构造,拷贝复制。这两点。 C++ 默认类中,会包含六个构造函数。我们只要把上面这两个禁用掉就没问题了。 怎么禁用?用新特性(=delete)。  有人说,“啊,我们用的什么类模板,有new” 别跟我扯什么,这哪的。今天就用这个写了。

class Singleton
{
public:
	static Singleton& GetInstance()
	{
		static Singleton instance;

		return instance;

	}
	Singleton(const Singleton&) = delete; //这个叫拷贝构造
	Singleton& operator =(const Singleton&) = delete;//拷贝赋值
	~Singleton() {};

private:
	Singleton() {}; //默认构造函数
};


class A      //有些人可能会这么写,这是不是也可以。
{
public:

	static A& GetInstance();

private:
	A() {};
	A(const A& rts);
};

A& A::GetInstance()
{
	static A a;
	return a;
}



int main()
{
	Singleton& sing = Singleton::GetInstance(); //得到一个实例

	A &a = A::GetInstance();
}

这是不是完全体现了C++ Class类应用的成果。

标签:Singleton,const,GetInstance,C++,static,单例,拷贝
来源: https://blog.csdn.net/qq_36912885/article/details/122171272

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有