C++中的普通常量变量

Plain Constant variables in C++

本文关键字:常量 变量 C++      更新时间:2023-10-16

C++中的普通常量变量默认为内部链接。假设如果我有以下内容:

  • 我在头文件( const int var = 2 ) 中定义了一个常量变量

  • 然后我将标头包含在两个 cpp 文件中。

如果我尝试在两个 cpp 文件中获取该 const 变量的地址(即 &var),那么这两个地址会相同吗?我还需要一个小的工作代码来验证这一事实。

不得不将此作为问题发布,因为我是新手,因此我无法在此线程中给出的答案的评论中提出。

对于C++来说,由于内部链接,它不会相同 - 这是 2 个不同的对象。C,情况正好相反,const将具有外部链接,因此由于重新定义,您将获得链接错误。

那么这两个地址会一样吗?

不。由于标头在编译期间包含在 *.cpp 文件中,因此包含标头的每个 *.cpp 都将创建自己的常量。

但是,如果在标头中使用extern const int var;并在 *.cpp 中设置默认值,则它们应相同。

变量将具有不同的地址。如果您不在任何地方引用变量地址,则变量在编译期间将被替换为他的值,并且在二进制文件中,您将根本找不到变量值。