reprint: http://www.cnblogs.com/graphics/archive/2010/07/07/1772733.html Why static members cannot be initialized within a class
In C + +, static members of a class (static member) must be declared within the class, initialized outside the class, as in the following.
Class a{ private: static int count;//class declaration};int A::count = 0;//out-of-class initialization eliminates the need to add static keyword
Why? Because static members belong to the entire class and not to an object, it is contradictory to initialize within a class to cause each object to contain that static member.
What can be initialized within a class.
There is only one member that can be initialized in a class, which is a static constant member.
Not this way.
Class a{ private: static int count = 0;//static members cannot be initialized within a class};
That's not true.
Class a{ private: const int count = 0;//constant member cannot initialize within class};
But this can
Class a{ private: static const int count = 0;//static constant members can be initialized within the class};
Why a static member cannot be initialized within a class