【发布时间】:2014-05-23 13:33:57
【问题描述】:
我是 C++ 的新手。我正在尝试在 C++ 中创建一个静态常量容器。在java中,我们通常通过静态常量初始化来做到这一点。例如
class ConstantDefinition {
public static const List<String> stringList = new ArrayList<String>();
static {
stringList.add("foo");
stringList.add("boo");
...blah
}
}
java 的工作方式,我不需要调用特定的方法来完成初始化。一旦类加载到 JVM 中,静态块就会被初始化。但是在 c++ 中,我们没有与 java 相同的类加载机制。 我想要的是拥有一个不可修改容器的副本,我可以使用它而无需每次都创建类对象。我理解的一种方法是创建一个类(类似于我上面的 java 示例)并定义一个 const 静态容器。但是我发现很难用 C++ 编写这种代码,因为如果不调用方法就无法进行初始化。那么实现这一目标的最佳方法是什么?第二种方法可能是我定义一个头文件并在命名空间中初始化全局变量。如果我采用这种方法,那么每次包含该头文件时它会创建不同的全局变量还是使用相同的全局变量?
谢谢, RG
【问题讨论】:
-
你不需要的部分是
new。 -
Cody,我写的是java代码,我们确实需要java中的新代码。
-
相关:[C++ 的成语相当于 Java 的静态块是什么? ](stackoverflow.com/q/19227664/514235)
标签: c++ static initialization constants