老实说,我想问几个问题,但只会用一个问题来回答。
根据我所见,静态函数可以在不需要创建类对象的情况下从外部访问,因此我假设这些函数来自程序初始化时创建的默认副本。当一个类通常具有单独使用的私有构造函数并且使用已知方法GetInstance
时,返回指针将指向的静态变量的地址。问题是您可以GetInstance
多次调用但指针指向的地址始终相同,为什么会发生这种情况,其次,它与直接静态函数有什么区别?我知道GetInstance
我可以访问storage
向量,因为创建了“COPY”(请参阅上面的问题)并且该函数StoreB
有一个this
指针,这也让我想到了一个问题,为什么静态函数没有this
指针,因为没有创建副本?
class store
{
private:
store(){};
~store(){};
std::vector<int>storage;
public:
static void Store( int a );
void StoreB( int a );
static store* GetInstance()
{
static store obj;
return& obj;
}
};
void store::StoreB( int a )
{
storage.push_back( a );
}
void store::Store( int a )
{
//storage.push_back( a ); //can't
}
int _tmain(int argc, _TCHAR* argv[])
{
store::Store( 2 );
store::GetInstance()->Store( 3 );
store *a = store::GetInstance();
store *b = store::GetInstance();
cout << a << endl //points to the same address
<< b << endl; //points to the same address
}