Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
静态类对象 为什么C++中允许静态类对象?它们有什么用 #include<iostream> using namespace std; class Test { static Test self; // works fine /* other stuff in class*/ }; int main() { Test t; getchar(); return 0; } #包括 使用名称空间std; 课堂测试{ 静态测试self;//工作正常 /*课堂上的其他东西*/ }; int main() { 试验t; getchar(); 返回0; }_C++ - Fatal编程技术网

静态类对象 为什么C++中允许静态类对象?它们有什么用 #include<iostream> using namespace std; class Test { static Test self; // works fine /* other stuff in class*/ }; int main() { Test t; getchar(); return 0; } #包括 使用名称空间std; 课堂测试{ 静态测试self;//工作正常 /*课堂上的其他东西*/ }; int main() { 试验t; getchar(); 返回0; }

静态类对象 为什么C++中允许静态类对象?它们有什么用 #include<iostream> using namespace std; class Test { static Test self; // works fine /* other stuff in class*/ }; int main() { Test t; getchar(); return 0; } #包括 使用名称空间std; 课堂测试{ 静态测试self;//工作正常 /*课堂上的其他东西*/ }; int main() { 试验t; getchar(); 返回0; },c++,C++,这就行了;编译器不必做任何特殊的事情,因为self既是Test的静态成员,也是Test类型。我看不出有什么理由要特别禁止这种特殊情况 现在,Test::self有一个问题,您声明了变量,但没有定义它。但是,这只是代码中的一个bug,很容易修复: class Test { ... }; Test Test::self; // <--- the definition int main() { ... 类测试{ ... }; 测试::self;// 您可以将它用于在类的所有实例之间

这就行了;编译器不必做任何特殊的事情,因为
self
既是
Test
的静态成员,也是
Test
类型。我看不出有什么理由要特别禁止这种特殊情况

现在,
Test::self
有一个问题,您声明了变量,但没有定义它。但是,这只是代码中的一个bug,很容易修复:

class Test {
  ...
};

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

int main()
{
  ...
类测试{
...
};

测试::self;// 您可以将它用于在类的所有实例之间共享的内容。例如,您可以使用它来实现