C++ 中的普通常量变量默认为内部链接。假设如果我有以下内容:
我在头文件中定义了一个常量变量(
const int var = 2
)然后我将标题包含在两个 cpp 文件中。
如果我尝试在两个 cpp 文件中获取该 const 变量的地址(即&var
),那么这两个地址是否相同?我还需要一个小的工作代码来验证这个事实。
我不得不将其发布为一个问题,因为我是新手,因此无法在此线程中给出的答案的评论中问它。
由于C++
内部链接,它不会相同 - 这是两个不同的对象。反之亦然,C
并且const
将具有外部链接,因此由于重新定义,您将收到链接错误。
那么这两个地址会相同吗?
不会。因为头文件在编译期间包含在 *.cpp 文件中,所以每个包含头文件的 *.cpp 都会创建自己的常量。
但是,如果您extern const int var;
在 header 中使用并在 *.cpp 中设置默认值,它们应该是相同的。
变量将具有不同的地址。也有可能,如果您没有在任何地方引用变量地址,则变量将在编译期间用他的值替换,并且在二进制文件中您根本找不到变量值。