问题标签 [static-initialization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
13 回答
117168 浏览

java - Java:静态初始化块什么时候有用?

块内初始化有什么区别static

以及单独的静态初始化:

0 投票
2 回答
206 浏览

c++ - 如何减轻模板类中共享成员的面向用户的 API 影响?

假设我有一种可以为给定整数构建的查找表:

然后有一个类,其模板参数是相同的整数,其构造函数初始化此查找表的成员实例:

在我的代码中,我用各种基数值来实例化它们:

这有效,不会产生任何毛茸茸的线程或 API 问题。myFoo但它不会在和之间共享 1 的基数表yourFoo。我可以硬编码对假定线程库的依赖,并构建一个按需填充的全局映射。但我的问题是:

“在现代 C++11 世界中,是否有一种干净的方式为 Foo 设计一个在标准库之外没有依赖关系的库?”

我想为此使用一个静态成员,因为模板类的每个单独实例化只创建一个静态成员变量。但这提出了谁负责为静态成员声明空间的问题,而这样做的人必须“知道初始化它的正确方法”:

阅读有关“ C++ 静态成员初始化(内部模板乐趣) ”之类的主题似乎并没有太大希望……除非我遗漏了什么。另外,如果Foo实例本身是静态的,会发生什么?:-/

0 投票
2 回答
1263 浏览

java - 寻找一种重新运行类静态初始化程序的方法

有没有办法将非核心 Java 类返回到新加载的状态?我想要相当于卸载一个类并从头开始重新加载它。我最关心的是静态初始化器和变量。

问题背景:我正在为学生代码编写一个机器人评分器。我见过的一个常见的学生错误是不恰当地使用静态变量。例如,考虑一个包含静态元素计数的 Collection。该集合在第一次创建和使用时会正常工作,但在下一次实例化时会失败。如果我希望我的测试尽可能模块化,我需要一种在测试后恢复干净状态的方法。

现在我或多或少地像这样加载这个类,我已经勾勒出我想如何使用它。

显然,robo-graders 不可能是完美的,但我想找出常见的错误,这就是其中之一。

根据Java 语言规范第 12.7 节,支持卸载类是可选的(但会做我想要的)。有没有办法在不依赖非标准功能的情况下做到这一点?

最后的手段是做一个 Ant 构建,它在单独的程序中运行一系列测试,但如果可能的话,我想在一个进程中完成这项工作。

0 投票
1 回答
865 浏览

c++ - 类模板内静态数据的初始化顺序


g_shouldBeOneThird 是否保证初始化为 0.333 左右?换句话说,静态初始化的 InitFirst<1>::s_dividedByThree 是否保证在用于静态初始化 g_shouldBeOneThird 时被初始化?

0 投票
2 回答
1444 浏览

java - Java 合法前向引用

以下代码是合法前向引用的情况吗?如果是,为什么?

0 投票
3 回答
99 浏览

java - Java中有没有办法确定是否在静态初始化程序中调用了一个方法(或没有)?

作为检查静态注册表的适当使用的一种方式:

0 投票
1 回答
18855 浏览

gcc - g++、静态初始化和-nostdlib

编译/链接 with-nostdlib似乎可以防止静态初始化,即使我添加自己的 crti.s 和 crtn.s 与.init/.fini部分。

是否有解决方法使 g++ 生成插入.init或我可以手动调用的静态初始化代码?

这是我尝试过的:

-nodefaultlibs单独包括静态初始化代码和调用,但强制使用 libc-_start/_init。

-nodefaultlibs -nostartfiles允许我使用自己的 _start / _init,但不包括代码或调用静态初始化。

0 投票
5 回答
110 浏览

java - 是否允许静态类构造函数中的异常以逃避正确的设计模式?

我发现自己经常在以下两种设计模式之间进行选择:

问题是我真的想为每个类初始化一次东西——我认为是静态的——比如设置一个记录器,从文件中加载一些地图等等——如果这个操作失败,我真的希望程序停止. 这两种设计模式看起来都很杂乱(第一个更明显),所以我想知道是否有更好的方法来做到这一点。

0 投票
2 回答
1014 浏览

c++ - 匿名命名空间中的静态结构

那这段代码实际上是做什么的?

为什么测试函数实际上被调用?为什么使用“匿名”命名空间?我在一个开源项目中找到了这段代码......

0 投票
2 回答
312 浏览

c - Initializing circular data in C. Is this valid C code according to any standard?

I wanted to see if I could initialize a global variable to point to itself:

This code compiles and runs as expected with gcc (all three pointers print identically).

I want to know:

  1. Is this reliable?
  2. Is this standard?
  3. Is this portable?

EDIT: Just to clarify, I am questioning the availability of the address of x in its own initializer.