C++中的普通常量变量
Plain Constant variables in C++
C++中的普通常量变量默认为内部链接。假设如果我有以下内容:
-
我在头文件(
const int var = 2
) 中定义了一个常量变量 -
然后我将标头包含在两个 cpp 文件中。
如果我尝试在两个 cpp 文件中获取该 const 变量的地址(即 &var
),那么这两个地址会相同吗?我还需要一个小的工作代码来验证这一事实。
不得不将此作为问题发布,因为我是新手,因此我无法在此线程中给出的答案的评论中提出。
对于C++
来说,由于内部链接,它不会相同 - 这是 2 个不同的对象。C
,情况正好相反,const
将具有外部链接,因此由于重新定义,您将获得链接错误。
那么这两个地址会一样吗?
不。由于标头在编译期间包含在 *.cpp 文件中,因此包含标头的每个 *.cpp 都将创建自己的常量。
但是,如果在标头中使用extern const int var;
并在 *.cpp 中设置默认值,则它们应相同。
变量将具有不同的地址。如果您不在任何地方引用变量地址,则变量在编译期间将被替换为他的值,并且在二进制文件中,您将根本找不到变量值。
相关文章:
- 通过多个头文件使用常量变量
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 非常量变量只读位置的赋值
- 使用大量已知常量变量的正确方法
- 无法在具有常量变量大小的类中创建堆栈分配数组
- 这些语句是否等效(静态变量、常量变量和泛型)
- 包含常量变量并包含在多个文件中的标头的链接错误
- 我们如何修改常量变量的值
- 如何在模板类中设置静态常量变量
- 为什么常量变量是模板特殊化所必需的,而不是常量
- 如何在函数中传递常量变量?
- 定义常量变量的最佳方法
- C++ 声明常量变量,但推迟其初始化?
- 如何初始化具有常量变量的结构数组
- 使用常量变量作为维度将矩阵声明为类成员时出现编译器错误
- 使用指针 c++ 更改常量变量
- c++ 类中的静态常量变量和常量变量在存储方面是否有区别
- 为什么 lambda 对象中的局部变量是常量变量?
- 使用常量变量作为数组的大小
- 为许多类可能需要的所有常量变量制作独立的头文件是否是一种很好的做法?