单例模式:一个类只能创建一个对象
关键点:
1.构造函数:private/protected 不能实例化对象
private 不能继承
2.通过静态成员函数申请对象空间,并返回地址
3.定义一个静态的标志,记录对象的个数,并控制
4.析构函数,将标记清空,以达到重复申请对象的目的
构造函数是私有的,不能被继承,在运行的时候报错
#include <iostream>
using namespace std;
class OneClass
{
private:
//1.构造函数:private / protected 不能实例化对象
// private 不能继承
OneClass()
{
}
public:
//3.定义一个静态的标志,记录对象的个数,并控制
static int nFlag;
//2.通过静态成员函数申请对象空间,并返回地址
static OneClass * CreateOJ()
{
if (1 == nFlag)
{
nFlag = 0;
return new OneClass;
}
else
return NULL;
}
//4.析构函数,将标记清空,以达到重复申请对象的目的
~OneClass()
{
nFlag = 1;
}
};
int OneClass::nFlag = 1;
//构造函数是private,可以编译通过,但是无法实例化对象,运行会报错
class CSon : public OneClass
{
};
int main()
{
OneClass * oc = OneClass::CreateOJ();
delete oc;
OneClass * oc1 = OneClass::CreateOJ();
system("pause");
return 0;
}