我是 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/