【发布时间】:2016-09-30 01:38:24
【问题描述】:
有人可以从最权威的 ISO C++ 常见问题解答中解释一下这个例子吗?代码如下:
// Fred.h
class Fred {
public:
static const int maximum = 42;
// ...
};
// Fred.cpp
#include "Fred.h"
const int Fred::maximum;
// ...
而我无法得到的陈述是:
如果您曾经获取 Fred::maximum 的地址,例如通过引用传递它或明确地说 &Fred::maximum,编译器将确保它具有唯一的地址。否则,Fred::maximum 甚至不会占用您进程的静态数据区中的空间。
编译器单独处理 .cpp 文件,不知道其他文件如何处理当前正在处理的文件中定义的数据。那么,编译器如何决定它是否应该分配一个唯一的地址呢?
原文在这里:https://isocpp.org/wiki/faq/ctors#static-const-with-initializers
【问题讨论】:
标签: c++ static initialization constants datamember