c++ - 类声明或定义中的静态变量?

标签 c++ static-members

我是 C++ 新手。
我有这样的课:

class CodeTest
{
private:
    static const int TOTAL=100;
};

TOTAL声明还是定义

在阅读 Scott Meyer 的书时,有人提到在实现文件中我们需要定义如下内容:

const int CodeTest::TOTAL;

为什么需要这个?

最佳答案

实现文件中的声明在头文件之外是必需的,因为否则每个包含该头文件的翻译单元都会定义自己的对象(即,它自己的变量存储)。

这将违反 One Definition Rule .结果将是例如如果变量在一个翻译单元中发生更改,则此更改对其他翻译单元是不可见的。现在,这并不重要,因为变量是恒定的。但是,获取它的地址也会在不同的翻译单元中产生不同的指针。

关于c++ - 类声明或定义中的静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11178434/

相关文章:

c++ - Code::Blocks WxWidget 错误 - 没有目标!你应该使用 wx-config 程序作为编译标志?

c++ - UWidgetComponent 未在蓝图编辑器中显示详细信息

PHP 可以使用 static::replace self::吗?

java - 理解类的映射字段上的最终静态使用

c++ - 为每个参数选择调用一次的静态变量和函数

c++ - 哪个函数用于初始化静态类成员?

c++ - 在 C++ 中格式化整数

c++ - 寻求理解 typedef

C++ 指向一个对象然后移动它的内存位置

c++ - 错误 LNK2001 : unresolved external symbol public: static class