代码规范:常量规则定义

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

常量是一种标识符,它的值在运行期间恒定不变。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

目录
相关文章
|
7月前
|
Java 编译器
正则表达式规则
Java中的正则表达式规则,如何写正则表达式?
48 0
|
19天前
|
数据处理
正则表达式详解:解析星号的含义
【4月更文挑战第3天】
29 1
正则表达式详解:解析星号的含义
|
19天前
|
监控 JavaScript 前端开发
|
1月前
|
程序员 编译器 C#
C#变量命名规则
C#变量命名规则
17 0
|
1月前
|
IDE 开发工具 C++
C++变量命名规则
C++变量命名规则
24 0
|
8月前
正则表达式的详细规则
正则表达式的详细规则
119 1
|
4月前
|
数据采集 Java API
Java 正则表达式【非贪婪匹配、格式验证、反向引用、API】
Java 正则表达式【非贪婪匹配、格式验证、反向引用、API】
|
10月前
通配符?,*,**区别
通配符?,*,**区别
113 0
|
6月前
|
Java 编译器 数据安全/隐私保护
1.1 关键字与保留字
1.1 关键字与保留字
23 0
|
10月前
|
Python
34.从入门到精通:Python3 正则表达式检索和替换 repl 参数是一个函数 正则表达式对象 正则表达式修饰符 - 可选标志 正则表达式模式* 正则表达式实例
34.从入门到精通:Python3 正则表达式检索和替换 repl 参数是一个函数 正则表达式对象 正则表达式修饰符 - 可选标志 正则表达式模式* 正则表达式实例