我目前正在阅读旧版 Nicolai Josuttis 关于 C++ 模板的书。我的问题是关于这里SortTracer
实现的静态数据成员的初始化。
具体来说,在 中tracer.hpp
,我们有:
class SortTracer {
private:
int value; // integer value to be sorted
int generation; // generation of this tracer
static long n_created; // number of constructor calls
static long n_destroyed; // number of destructor calls
static long n_assigned; // number of assignments
static long n_compared; // number of comparisons
static long n_max_live; // maximum of existing objects
...
}
上述静态数据成员的初始化在tracer.cpp
:
#include "tracer.hpp"
long SortTracer::n_created = 0;
long SortTracer::n_destroyed = 0;
long SortTracer::n_max_live = 0;
long SortTracer::n_assigned = 0;
long SortTracer::n_compared = 0;
测试代码在这里:
#include "tracer.hpp"
...
int main()
{
// prepare sample input:
SortTracer input[] = { 7, 3, 5, 6, 4, 2, 0, 1, 9, 8 };
...
}
我的问题/困惑是:这个程序不会遭受静态初始化命令的失败吗?(也就是说,即使程序目前产生了正确的结果,这是由于静态数据成员的tracer.cpp
初始化与默认初始化相同)