假如我们想试CMyClass这个类成为一个单例类,则我们可以进行如下操作
类中申明一个static的成员函数
static CMyClass* toIns();
然后在.cpp中定义一个static的全局变量,并实现toIns()函数
static CMyClass* cpShare=NULL;
//-----------------------------------------------------------------------------
CMyClass* CMyClass::toIns()
{
if(!cpShare){
cpShare= new CMyClass();
}
return cpShare;
}
然后在其他类中
#include ”MyClass.h"
就可以通过
MyClass::toIns()->function();
这种形式来操作这个单例类。这个类的对象在整个程序中只会有一个,并且是全局变量。任何CPP都可对这个类对象进行数据的修改读取等操作。
单例类的用途很广,这里就不赘述了。大家根据自己的需求来决定是否使用单例类吧。
下面给出一个简单的例子
//------MyAge.h
class CMyAge
{
public:
CMyAge();
~CMyAge();
static MyAge* CMyAge();
void SetAge(int nAge);//设置年龄
int GetAge();//获取年龄
private:
int m_nAge;
}
//------MyAge.cpp
static CMyAge* cpShare=NULL;
//-----------------------------------------------------------------------------
CMyAge* CMyAge::toIns()
{
if(!cpShare){
cpShare= new CMyAge();
}
return cpShare;
}
//-----------------------------------------------------------------------------
CMyAge::CMyAge()
{}
//-----------------------------------------------------------------------------
CMyAge::~CMyAge()
{}
//-----------------------------------------------------------------------------
void CMyAge::SetAge(int nAge)//设置年龄
{m_nAge = nAge;}
//-----------------------------------------------------------------------------
intCMyAge::SetAge(int nAge)//获取年龄
{ return m_nAge;}
//-----------------------------------------------------------------------------
//使用例子
#include "MyAge.h"
#include <iostream>
void main()
{
CMyAge* pMyAge = CMyAge::toIns();
pMyAge->SetAge(25);
std::cout<<pMyAge->GetAge();
}