c++ - 为什么header中的static const在代码文件中定义为const

标签 c++

如果我是正确的,类中的静态常量成员定义如下:

// header file, inside a class definition:
static const SomeType my_const;

// cpp file
const ClassName::SomeType my_const = SomeType(5.0);

现在我不明白为什么分类器不存在于 cpp 文件中。可以这么说,签名不匹配,我不想强​​迫症太多,但这背后的原因是什么?

出于好奇,当我添加静态时,这是我收到的错误消息:

error C2720: 'static ' storage-class specifier illegal on members

最佳答案

static 是一个大量重载的关键字,它至少有 4 种不同的含义,还有更多需要注意。难怪你会感到困惑。

您的第一行不只是站在标题中,而是在一个类中。 (请编辑代码)。在一个类中,您可以有普通成员,也可以有在实例之间共享的成员。标记 static 是选择。

在 namespace 范围内,关键字的含义完全不同,即将链接变为内部链接。作为在该范围内进行的定义 ios,您不得添加静态的“版本”。

关于c++ - 为什么header中的static const在代码文件中定义为const,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17147346/

相关文章:

c++ - 在 Eclipse C++ 中包含头文件中的类

c++ - std::string 指针的 Find() 方法

C++ 堆排序算法在 4100 多个数据条目后崩溃?

c++ - strcmp 的段错误

c++ - 如何从 add_custom_target/command 调用 CMake 函数?

c++ - std::initializer_list 无法从 <brace-enclosed initializer list> 推导出来

c++ - std::cout 如何知道在哪里打印?

c++ - 对于不可复制类型的范围循环,是否可能?

c++ - 将托管函数指针作为非托管回调传递

c++ - QueryPerformanceCounter 和溢出