C++ 学习笔记2 ----- 单例模式初次尝试

初次实现单例模式,等以后学得更深入再结合更具体的场景实现吧,这里推荐一篇博客点击打开链接,讲的很清楚(侵删)。

设计模式:单例模式

内存中只能有一个对象

实现步骤:

1.将构造函数私有化;

2.在类中定义一个静态的指针对象(可为私有,可为公有),并在类外初始化为NULL;

3.定义一个返回值为类指针的静态成员函数

 ///
 /// @file    Singleton.cc
 /// @author BigDayDreamer(845900796@qq.com)
 ///
 
#include <stdio.h>
#include <iostream>
using std::cout;
using std::endl;

//要求:由该类只能生成唯一的对象
//1. 该对象不能是栈对象
//2. 该对象只能是堆对象


//主要作用:用来替换全局变量
//使用场景: 配置文件的读取/词典类的实现/日志系统的输出对象

class Singleton
{
public:
	static Singleton * getInstance()
	{
		if(_pInstance == NULL)
			_pInstance = new Singleton();
		return _pInstance;
	}

private:
	Singleton(){}
	
	static Singleton * _pInstance;
};

Singleton * Singleton::_pInstance = NULL;

//Singleton s3;
int main(void)
{
	//Singleton s1;//禁止该语句运行, 让其不能通过编译
	//Singleton s2;//需要在类之外调用默认构造函数
	
	//Singleton * p1 = new Singleton;
	//Singleton * p2 = new Singleton;
	Singleton * p1 = Singleton::getInstance();
	Singleton * p2 = Singleton::getInstance();
	Singleton * p3 = Singleton::getInstance();

	printf("p1 = %p\n", p1);
	printf("p2 = %p\n", p2);
	printf("p3 = %p\n", p3);

	delete p1;//不希望该语句编译通过

	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值