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

标签 c++

据我了解,您在 .cpp 文件中而不是在 .h 中初始化静态成员的原因是,获取该成员的多个实例没有风险。那么以这个例子为例:

   //Foo.h
   #ifndef FOO_H
   #define FOO_H

   class Foo{
      static int a;

   }; 
   int Foo::a = 95; 
   #endif

预处理器指令确保此 .h 文件仅编译一次,从而确保静态成员只有一个实例。这可以代替在 .cpp 文件中启动静态成员吗​​?

最佳答案

不,它只确保每个编译单元(.cpp 文件)包含一次 Foo.h。不在整个项目中。您应该在 Foo.cpp

中定义静态成员

关于c++ - 在 C++ 中初始化静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11360984/

相关文章:

c++ - Qt/C++ 错误处理

C++, OpenGL - 几何着色器

c++ - glPushMatrix() 和 glPopMatrix() 如何保持场景不变?

c++ - 在 Freeswitch 中使用 AWS C++ SDK 加载模块时出现 undefined symbol 错误

c++ - 预编译头对mfc有多大影响?

c++ - Moses 源代码中的关键字 mutable 是做什么用的?

c++ - 在 C++ 中创建具有随机枚举类型的 Card 对象

c++ - 合并两个 cv::Mat 而不复制数据

c++ - 将 JSON 文本文件转换回 QJsonArray

c++ - 初始化抛出异常的对象