2012-01-28 127 views
4

为什么在C++中允许静态类对象?他们的用途是什么?静态类对象

#include<iostream> 

using namespace std; 

class Test { 
    static Test self; // works fine 

    /* other stuff in class*/ 

}; 

int main() 
{ 
    Test t; 
    getchar(); 
    return 0; 
} 

回答

4

这只是工作;编译器不必做任何特殊的事情,因为self既是Test的静态成员,也是Test类型的静态成员。我看不出为什么这个特殊情况需要特别禁止。

现在,那里Test::self的问题在于您声明变量,但未能定义它。但是,这只是代码中的一个错误,并且很容易修复:

class Test { 
    ... 
}; 

Test Test::self; // <--- the definition 

int main() 
{ 
    ... 
+0

+1完美答案:) – 2012-01-28 09:34:00

4

您可以将它用于在类的所有实例之间共享的内容。例如,您可以使用它来实现Singleton pattern