定义常量变量的最佳方法
The best way to define a const variable
我正在使用C++编码,我想知道定义常量变量的最佳方法。
据我了解,如果我想在 cpp 文件中定义一个 const 变量,我们可以像这样编写:const static int LEN = 5;
现在C++建议我们使用匿名命名空间:namespace { const int LEN = 5; }
我不知道如何在头文件中正确定义常量变量。
我在某些头文件中看到了一些代码,如下所示:
const int LEN = 5;
那么这是最好的方法吗?为什么我们不在头文件中编写const static int LEN = 5;
代码?
我正在使用C++编码,我想知道定义常量变量的最佳方法。
没有"最好的方法"。这要看情况。
顺便说一句,听说过constexpr
吗?
据我了解,如果我想在 cpp 文件中定义一个 const 变量,我们可以像这样编写之前的代码:
const static int LEN = 5;
是的,我们能。
请注意,使用static
关键字声明的命名空间范围内的内容具有内部链接。
另请注意,我不是在称LEN
为"静态变量"。
现在C++建议我们使用匿名命名空间:
namespace { const int LEN = 5; }
在匿名命名空间中声明的所有内容都具有内部链接。但我不认为C++本身提出任何建议。
我在某些头文件中看到了一些代码,如下所示:
const int LEN = 5;
C++有一个特殊的规定,使命名空间范围的 const 限定变量默认具有内部链接,即使没有static
说明符也是如此。
请参阅:https://en.cppreference.com/w/cpp/language/storage_duration#Linkage
请注意,它与 C 不同。
另请注意,这并不意味着"const
包括static
"。以这种方式思考是令人困惑的。
为什么我们不在头文件中编写
const static int LEN = 5;
代码?
实际上,我们可以。由于非技术原因,它甚至可能是有益的。如果您认为阅读您的代码的受众不知道该特殊规定,则static
说明符将向您的受众明确表示该变量具有内部链接。
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 在C++中向零方向近似的最佳方法
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 检测win32服务创建和删除的最佳方法
- 在C++中样板"冷/never_inline"错误处理技术的最佳方法是什么?
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 将线程中的数据存储到全局容器的最佳方法?
- 将一系列整数放入类的最佳方法是什么?
- 在派生类中使用基类的私有成员变量的最佳方法
- 在 C++ 中将非指定类型作为参数传递的最佳方法?
- Qt - QVector 和模型视图 - 从列表视图获取自定义类的最佳方法是什么?
- 使用 Git 处理 C++ Visual Studio 2019 解决方案的外部依赖项源代码管理的最佳方法是什么?
- 比较两个节点坐标的最佳方法是什么?
- 在nodejs中使用本机代码的最佳方法是什么?
- 将 pybind11 绑定标记为已弃用的最佳方法
- C++:将向量传递到构造函数以创建成员变量的最佳方法?
- C++中变量混叠的最佳方法
- 读取大文件(>2GB)(文本文件包含以太网数据)并通过不同参数随机访问数据的最佳方法是什么?