從我所瞭解的情況來看,你在.cpp文件中初始化一個靜態成員而不是在.h中的原因是這樣就沒有風險去獲得該成員的多個實例。在C++中初始化靜態成員
//Foo.h
#ifndef FOO_H
#define FOO_H
class Foo{
static int a;
};
int Foo::a = 95;
#endif
預處理指令確保這個.h文件只編譯一次,這確保只有一個靜態成員的實例。這是可能的,而不是啓動.cpp文件中的靜態成員?
.h文件根本不編譯。 Foo_H設置爲Foo.h不會被多次包含 – Andrew 2012-07-06 11:05:31
[Static Data Member Initialization]的可能重複(http://stackoverflow.com/questions/11300652/static-data-member-initialization) – dasblinkenlight 2012-07-06 11:11:03