为什么C ++中允许使用静态类对象?它们的用途是什么?
#include<iostream>
using namespace std;
class Test {
static Test self; // works fine
/* other stuff in class*/
};
int main()
{
Test t;
getchar();
return 0;
}
答案 0 :(得分:4)
这只是有效的;编译器不必执行任何特殊操作,因为self
既是Test
的静态成员又是Test
类型。我认为没有必要特别禁止这种特殊情况。
现在, 是Test::self
的问题,因为你声明了变量,但未能定义它。但是,这只是代码中的一个错误,很容易修复:
class Test {
...
};
Test Test::self; // <--- the definition
int main()
{
...
答案 1 :(得分:4)
您可以将它用于在类的所有实例之间共享的内容。例如,您可以使用它来实现Singleton pattern。