有的时候,写C++代码的时候,初始化了一个实例(Instance),即用类的定义创建了一个对象。

由于某些原因,在一些其它地方也需要使用这个实例,当然不能再重新定义一个对象了。这个时候,唯有想办法获得之前那个对象的指针。当指针也不能成为传递参数的时候,怎么办呢?可以利用静态数据成员,用如下的方法定义一个对象。

class TestInstance
{
public:
TestInstance(void);
~TestInstance(void);

public:
static TestInstance* Instance(){
if(_instance == NULL){
_instance = new TestInstance();
}
return _instance;
}
static void Release(){
if(_instance != NULL){
delete _instance;
_instance = NULL;
}
}
private:
static TestInstance* _instance;
}
TestInstance* TestInstance::_instance = NULL;

我们就是通过static TestInstance* _instance这个静态数据成员来固定地指向对象本身的。这样的设计,需要在初始化类的时候,用如下的方法进行初始化:

TestInstance _TestInstance = TestInstance::Instance();

通过这样的方法,我们就能把_TestInstance实例自己的指针,存到自己的数据成员里。

在我们需要一个TestInstance实例的地方,只要用下面的语句就可以获得它的指针了:

TestInstance * TestInstance = TestInstance::Instance();

当然,记得在不需要对象的时候,手动release掉:

TestInstance::Release();

这个技巧在很多情形下很有用!