C++工具箱(一)——单件模版类

本文介绍了如何利用C++模板来简化单例类的编写,避免重复工作。通过前向声明和模板实例化的特性,确保在不同源文件中包含同一模板头文件时,只会生成一个单例实例,防止链接时的多重定义问题。
摘要由CSDN通过智能技术生成

我们在工作中往往会用到单件类。但是我们知道单件类的实现就那么几步,如果系统中有多个单件类的话,去一个个写非常麻烦,那么怎么办呢?


单件模版类就派上用场了:

template <typename _CoClass>
class Singleton
{
public:
	Singleton() {}
	virtual ~Singleton() {}

	static _CoClass& GetInstance()
	{
		if (!m_psInstance)
		{
			m_psInstance = new _CoClass();
		}
		
		return *m_psInstance;
	}

private:
	// 防止单件复制.
	Singleton(const Singleton& copy);
	Singleton& operator = (const Singleton& rhs);

	static _CoClass*	m_psInstance;
};


//
// 单件实例指针初始化.
//
template <typename _CoClass>
_Coclass* Singleton<_CoClass>::m_psInstance = 0;
那么该怎么用呢?如下:


                
使用C++代码封装的win32操作, 与MFC相似,对于学习SDK与C++是巨好的参考 Tutorials Menu of tutorials Tutorial 1: The Simplest Window Tutorial 2: Using Classes and Inheritance Tutorial 3: Using Messages to Create a Scribble Window Tutorial 4: Repainting the Window Tutorial 5: Wrapping a Frame around our Scribble Window Tutorial 6: Customising Window Creation Tutorial 7: Customising the Toolbar Tutorial 8: Loading and Saving Files Tutorial 9: Printing Tutorial 10: Finishing Touches Tutorial 1: The Simplest Window The following code uses Win32++ to create a window. This is all the code you need (in combination with Win32++) to create and display a simple window. Note that in order to add the Win32++ code to our program, we use an #include statement as shown below. #include "../Win32++/Wincore.h" INT WINAPI WinMain(HINSTANCE, HINSTANCE, LPTSTR, int) { //Start Win32++ CWinApp MyApp; //Create a CWnd object CWnd MyWindow; //Create (and display) the window MyWindow.Create(); //Run the application return MyApp.Run(); } This program has four key steps: Start Win32++. We do this here by creating a CWinApp object called MyApp. Create a CWnd object called MyWindow. Create a default window by calling the Create function. Start the message loop, by calling the Run function. If you compile and run this program, you'll find that the application doesn't end when the window is closed. This is behaviour is normal. An illustration of how to use messages to control the windows behaviour (including closing the application) will be left until tutorial 3.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值