static-initialization相关内容

如果析构函数有副作用,并且对象是从另一个静态对象的析构函数访问的,该如何进行静态反初始化?

有一个简单且众所周知的模式可以避免静态初始化失败,如section 10.13 of the C++ FAQ Lite中所述。 在此标准模式中,存在一种权衡,要么构造的对象永远不会被析构(如果析构函数没有重要的副作用,这不是问题),要么不能从另一个静态对象的析构函数安全地访问静态对象(参见section 10.14 of the C++ FAQ Lite)。 所以我的问题是:如果一个静 ..

Java 合法前向引用

以下代码是合法前向引用的情况吗?如果是,为什么? 公共类MyClass{私有静态 int x = getValue();私有静态 int y = 5;私有静态 int getValue(){返回 y;}public static void main(String[] args){System.out.println(x);}} 解决方案 您拥有的上述代码是完全合法的 Java.在 Java ..
发布时间:2022-01-05 12:16:04 Java开发

使用模板参数初始化静态常量成员

我有几行可以在我的系统上很好地编译,但不能在同事系统上编译.这就是为什么我想问这个问题的首选解决方案是什么样的.我必须处理一个 enum,它隐含地定义了我必须为 std::array 提供多少空间.代码的其他部分也使用 FooSize 是静态的.(优化) 我目前的实现是这样的 enum class FooType{短福,龙福};//定义在不同的文件中模板 类 ..
发布时间:2021-08-30 18:36:18 C/C++开发

C ++ Nifty Counter习惯用法;为什么?

我最近遇到了漂亮的计数器成语.我的理解是,它用于在cout,cerr等标准库中实现全局变量.由于专家选择了它,因此我认为它是一种非常强大的技术. 我正在尝试了解使用像Meyer Singleton这样的东西有什么好处. 例如,一个人可能只是在头文件中: inline Stream&getStream(){static Stream s;返回s;}静态流流= getStream(); ..
发布时间:2021-04-19 20:46:53 C/C++开发

在C ++中初始化类的静态数组成员的更好方法(尽管首选const)

我有一个静态的指向函数的指针数组,该指针作为类的成员. 我需要对其进行初始化,但事实证明此数组的长度为64K,因此使用像{ x, y, z, ... }这样的静态初始化程序进行初始化是不切实际的,因为这样会使代码混乱. 我必须通过几个循环的代码来初始化它. 我想到的方法是通过在构造函数中初始化static数组并为其设置一个标志,因此只有构造该类的第一个实例时才会触发该初始化. ..

C ++ 11中线程安全的局部静态变量初始化的代价?

我们知道局部静态变量初始化在C ++ 11中是线程安全的,现代编译器完全支持此操作. (在C ++ 11中本地静态变量初始化线程安全吗? ?) 使其成为线程安全的代价是什么?我知道这很可能取决于编译器的实现. 上下文:我有一个多线程应用程序(10个线程),通过以下函数以很高的速率访问单例对象池实例,我担心它的性能含义. template ObjectPool ..
发布时间:2020-07-10 00:30:26 C/C++开发

struct参数的默认值

假设我具有以下结构: struct myStruct { int x; int y; int z; int w; }; 我想在调用以下函数时将此结构初始化为默认值.如果有帮助,我正在寻找一个简单的零初始化. void myFunc(myStruct param={0,0,0,0}) { ... } 但是,此代码给了我编译错误.我已经尝试过VS2003和VS2008. ..

零初始化,静态初始化和价值初始化有何不同?

Ben Voigt 指出了 零初始化是静态初始化的步骤之一.但是您是对的,您不能盲目地替换后者(标签),因为对于值初始化也执行零初始化.但是,在C ++的上下文中,不需要进行零初始化(标记为零),因为静态初始化和值初始化都已经存在标记,并且它们更相关. 我认为在某些情况下,“零初始化" 而不是“静态初始化" 或还是“零初始化"永远不会在野外发生,并且我应该使用更具体的术语,例如:“静态初始 ..