我们使用的是Visual C++ 9,有一个C++库可以被许多其他库使用。这些库内置于它们的.dll文件中。
最终结果如下。因为每个.dll都是一个单独的可执行模块,所以它必须保留所有这些常量。每个“常量”实际上都是一个类的实例,其中包含一个非平凡的构造函数和析构函数。现在,每个.dll都有一个MagicValue副本,用于构造
类NonConstant的构造函数不是由NonConstant a = 2;指定的,NonConstant a = 2;的初始化将调用对象a的非参数构造函数,因此#1的初始化不是静态初始化,而是动态初始化更新:
在下面对这个问题的评论中,有人说,除了构造函数的类可以是非文字类型之外,任何方面的constexpr构造函数<