1
30
另一种选择是,您可能正在寻找静态的类比 Java中的块。加载应用程序时运行的代码块。 C++中没有这样的东西,但它可以用 静态对象。
然而。我以前被这个东西咬过,因为它是C++的一个微妙的边缘例子。 标准。如果静态对象不能被main调用的任何代码访问, 静态对象的构造函数可以调用,也可以不调用。 我发现使用gcc hello将得到输出,而使用Visual Studio,hello将得到输出。 不是。 |
2
15
我发现 this 在代码项目上回答。它包含了一个额外的静态变量,但我相信它比Bradgonesurfing的答案更可靠。基本上是这样的:
这也意味着,像Java的静态块一样,您不需要实际拥有一个实例。
编辑: 抱歉这么晚了,但是我测试了什么 bradgonesurfing 提到:
我在main.cpp中使用了以下内容:
我编的
以下是G++的当前版本输出:
|
3
5
在C/C++中没有“静态块”这个概念。但是Java有一个“静态块”,它是一个初始化一个类的代码块,它在创建类的第一个实例之前运行一次。基本概念“运行一次的东西”可以用静态变量在C/C++中模拟,例如:
但是这不是线程安全的 . 在有多个线程的情况下使其正常工作有时是困难和棘手的。 |
4
1
|
5
0
在C++中,有一个匿名命名空间的概念。
在C中得到同样的效果
简单来说,编译器不会从 当它们被声明为静态或 在匿名命名空间中。 |