代码规范:常量规则定义

简介: 使用枚举:来初始化类中的恒定常量- 一般可用来在类中记录函数的返回值类型之类的内容。

常量是一种标识符,它的值在运行期间恒定不变。C 语言用 #define 来定义常量(称为宏常量)。C++ 语言除了 #define 外还可以用 const 来定义常量(称为 const 常量)。


在函数中尽量的避免直接出现数值,特别是大量的出现数值

对于一些公用的常量,包括不限于整形,长整型,双精度整形,字符串尽量使用宏定义。

5.2 const 与 #definde的比较


C++ 语言可以用 const 来定义常量,也可以用 #define 来定义常量。但是前者比后者有更多的优点:


(1) const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。


(2) 有些集成化的调试工具可以对 const 常量进行调试,但是不能对宏常量进行调试


补充:但如果是一些类型的再封装,或者单纯一些数值的话,建议使用宏常量,这样可以在代码中更清晰的表明功能含义。


5.3 常量定义规则


【规则 5-3-1】需要对外公开的常量放在头文件中,不需要对外公开的常量放在定义文件的头部。为便于管理,可以把不同模块的常量集中存放在一个公共的头文件中。


【规则 5-3-2】如果某一常量与其它常量密切相关,应在定义中包含这种关系,而不应给出一些孤立的值


5.4 类中的常量


有时我们希望某些常量只在类中有效。由于#define 定义的宏常量是全局的,不能达到目的,于是想当然地觉得应该用 const 修饰数据成员来实现。const 数据成员的确是存在的,但其含义却不是我们所期望的。const 数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的,因为类可以创建多个对象,不同的对象其 const 数据成员的值可以不同。


不能在类声明中初始化 const 数据成员。以下用法是错误的,因为类的对象未被创建时,编译器不知道 SIZE 的值是什么。


使用枚举:来初始化类中的恒定常量

- 一般可用来在类中记录函数的返回值类型之类的内容。



----------------

[服务器高级架构体系:https://xxetb.xet.tech/s/4DEnTI

目录
相关文章
|
Java 测试技术
干货|这些JMeter内置函数,你了解多少?建议收藏
干货|这些JMeter内置函数,你了解多少?建议收藏
207 1
|
11月前
|
SQL 关系型数据库 MySQL
SQL命令行退出操作指南:轻松掌握不同数据库环境下的退出技巧
在数据库管理与开发过程中,经常需要通过SQL命令行工具(如MySQL的mysql客户端、PostgreSQL的psql、SQL Server的sqlcmd等)与数据库进行交互
962 59
|
4月前
|
JSON 监控 Java
日志与追踪的完美融合:OpenTelemetry MDC 实践指南
日志与追踪的完美融合:OpenTelemetry MDC 实践指南
269 24
|
前端开发 JavaScript 程序员
后端程序员的前端捷径-超级容易上手使用的前端框架layUI(下)
后端程序员的前端捷径-超级容易上手使用的前端框架layUI
170 9
|
10月前
|
数据采集 监控 算法
大数据与物流行业:智能配送的实现
【10月更文挑战第31天】在数字化时代,大数据成为物流行业转型升级的关键驱动力。本文探讨大数据如何在物流行业中实现智能配送,包括数据采集与整合、数据分析与挖掘、智能配送规划及实时监控与评估,通过案例分析展示了大数据在优化配送路线和提升物流效率方面的巨大潜力,展望了未来智能配送的高度自动化、实时性和协同化趋势。
|
12月前
|
存储 索引 Python
python中的数据容器
python中的数据容器
|
Unix Linux 网络安全
这份MobaXterm使用指南,低调收藏!
这份MobaXterm使用指南,低调收藏!
1080 0
|
SQL API Python
`bandit`是一个Python静态代码分析工具,专注于查找常见的安全漏洞,如SQL注入、跨站脚本(XSS)等。
`bandit`是一个Python静态代码分析工具,专注于查找常见的安全漏洞,如SQL注入、跨站脚本(XSS)等。
|
人工智能 Shell Linux
探索ls命令中的通配符匹配
探索ls命令中的通配符匹配
264 1
|
监控 前端开发 Java
Agent 的使用-Spring Boot | 学习笔记
快速学习 Agent 的使用-Spring Boot
Agent 的使用-Spring Boot | 学习笔记