在C++中初始化静态成员

Car*_*901 0 c++

根据我的理解,你在.cpp文件中而不是在.h中初始化静态成员的原因是这样就没有获得成员的几个实例的风险.接下来这个例子:

   //Foo.h
   #ifndef FOO_H
   #define FOO_H

   class Foo{
      static int a;

   }; 
   int Foo::a = 95; 
   #endif
Run Code Online (Sandbox Code Playgroud)

预处理程序指令确保此.h文件仅编译一次,这确保只有一个静态成员实例.是否可以这样做而不是在.cpp文件中启动静态成员?

Man*_*Way 7

不,它只保证Foo.h每个编译单元(.cpp文件)包含一次.不在整个项目中.您应该在其中定义静态成员Foo.cpp