如何在 C 中初始化静态 const 成员?

新手上路,请多包涵

是否可以在构造函数之外初始化静态 const 值?可以在发现成员声明的地方初始化吗?

 class A {
private:
  static const int a = 4;
  /*...*/
};

原文由 anarhikos 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 789
2 个回答

是的,您可以,但仅适用于 int 类型。如果您希望您的静态成员是任何其他类型,则必须在 cpp 文件中的某处定义它。

 class A{
private:
 static const int a = 4; // valid
 static const std::string t ; // can't be initialized here
 ...
 ...
};

// in a cpp file where the static variable will exist
const std::string A::t = "this way it works";

另外,请注意,此规则已在 C++11 中删除,现在(使用提供该功能的编译器)您可以直接在类成员声明中初始化您想要的内容。

原文由 Klaim 发布,翻译遵循 CC BY-SA 3.0 许可协议

您不能在构造函数中初始化静态成员。您可以在声明时内联初始化整数类型。必须定义其他静态成员(在 .cpp 文件中):

 // .h
class A{
private:
 static const int a = 4;
 static const foo bar;
 ...
 ...
};

// .cpp
const foo A::bar = ...;

原文由 sbi 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题