静态类对象

时间:2012-01-28 09:20:18

标签: c++

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

#include<iostream>

using namespace std;

class Test {
  static Test self;  // works fine

  /* other stuff in class*/

};

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

2 个答案:

答案 0 :(得分:4)

这只是有效的;编译器不必执行任何特殊操作,因为self既是Test的静态成员又是Test类型。我认为没有必要特别禁止这种特殊情况。

现在, Test::self的问题,因为你声明了变量,但未能定义它。但是,这只是代码中的一个错误,很容易修复:

class Test {
  ...
};

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

int main()
{
  ...

答案 1 :(得分:4)

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