我有很长的Java语言,对C ++还是比较陌生。因此,在Java中,如果在类级别有一些复杂的静态对象(在Java中,一切都在类级别),我们可以简单地使用静态块来对其进行初始化。例如
public class MyClass extends MyBase {
public static final Map<String, AComplexClass> STATIC_MAP = new HashMap<String, AComplexClass> ();
static {
AComplexClass first = ComplexClassFactory.createComplexType1();
first.configure("Something", "Something");
STATIC_MAP.put("key1", first);
// do some more
}
}
Run Code Online (Sandbox Code Playgroud)
但是,鉴于初始化C ++静态变量的局限性,如果我想定义相同的变量,这可能太复杂了STATIC_MAP,似乎我需要在.cpp文件中为每个AComplexClass对象命名变量,然后放入地图,在代码中创建一些垃圾也有机会让其他班级偶然提及他们。
那么,等效于此类静态初始化逻辑的C ++的最佳实践是什么?我认为这是相同的策略,但可能还有其他风格。
public int difftime(String string, String string2) {
int hours;
int min = 0;
int days;
long difference ;
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm");
Date date1 = simpleDateFormat.parse("08:00 AM");
Date date2 = simpleDateFormat.parse("04:00 PM");
difference = date2.getTime() - date1.getTime();
days = (int) (difference / (1000 * 60 * 60 * 24));
hours = (int) ((difference - (1000 * 60 * 60 * 24 * days)) / (1000 * 60 * 60));
min = (int) (difference - (1000 * 60 …Run Code Online (Sandbox Code Playgroud)