为什么在 cpp 文件中定义了非 int const 静态

Why are non-int const statics defined in cpp file?

本文关键字:int const 静态 定义 cpp 文件 为什么      更新时间:2023-10-16

前几天我正在查找如何将静态常量添加到类中。我注意到很多例子都在显示...

(我们会说公开的,因为它的)

测试.h

class A {
public:
  static const int HELLO_WORLD=1;
};

但是,我想定义一个字符串,但这没有编译。

测试.h

class A {
public:
  static const std::string HELLO_WORLD="WORLD HELLO";
};

经过一番研究,我发现对于非整数来说,情况有所不同。我必须在标头中声明它们,但在 cpp 文件中设置它们的值。

测试.h

class A {
public:
  static const std::string HELLO_WORLD;
};

测试.cpp

#include "test.h"
const std::string A:HELLO_WORLD = "WORLD HELLO";

我只能找到如何解决它的答案,但实际上不知道为什么需要这样......我的问题是为什么它必须这样,为什么允许声明 + 设置整数?

在 c++

11/c++14 中还有更好的方法吗?(不妨问一下)

Stroustrup:"在C++98中,只有整型的静态常量成员才能在类中初始化,并且初始值设定项必须是常量表达式。这些限制确保我们可以在编译时进行初始化。

试试这个:

class A {
public:
  constexpr static const char *HELLO_WORLD="WORLD HELLO";
};