C++ 当类的静态成员被销毁时
我必须写一个单例类,我写的类网络说如下。有一个内部类集合旨在销毁我的singleton类的静态成员。据说程序运行完后,静态成员将被销毁。也就是说,将调用类集合的析构函数,并且可以在VS的输出窗口中看到“Call destructor”。但是在程序退出后,我看不到这些单词。静态成员collect尚未被销毁。这是怎么发生的C++ 当类的静态成员被销毁时,c++,static,singleton,C++,Static,Singleton,我必须写一个单例类,我写的类网络说如下。有一个内部类集合旨在销毁我的singleton类的静态成员。据说程序运行完后,静态成员将被销毁。也就是说,将调用类集合的析构函数,并且可以在VS的输出窗口中看到“Call destructor”。但是在程序退出后,我看不到这些单词。静态成员collect尚未被销毁。这是怎么发生的 class Singleton { public: class Collection { public: ~Collect
class Singleton
{
public:
class Collection
{
public:
~Collection()
{
OutputDebugString(_T("Call Destructor\n"));
}
};
static Collection collect;
};
int _tmain(int argc, _TCHAR* argv[])
{
Singleton s;
return 0;
}
静态类成员在程序终止时被销毁,就像所有静态对象一样。但是,必须定义它们,而您的示例忽略了这一点。您只需声明成员。定义必须仍然出现在类的命名空间范围之外。因此,要解决这个问题:
class Singleton
{
public:
class Collection
{
public:
~Collection()
{
OutputDebugString(_T("Call Destructor\n"));
}
};
static Collection collect;
};
Singleton::Collection Singleton::collect;
只需定义它。@StoryTeller:这是一个答案,不是评论@马丁邦纳-好的,我明白了