高质量C/C++编程指南--常量
来源:互联网 发布:js根据class删除tr 编辑:程序博客网 时间:2024/05/18 01:16
此系列文章实为对《高质量程序设计指南--C++/C语言》的重点摘要总结
本篇总结的为常量
为什么需要常量?
这个问题可以换成为什么不直接使用数字或字符串:
- 会使程序的可读性变差。就算程序员自己都可能会忘记了那些数字或字符串是什么意思,更别说阅读者了(哪怕有注释)
- 在程序中多处引用同样的数字或字符,难免出现错误
- 如果需要修改,而同一数字或字符又在很多的地方被使用。这样会使工作量增大,而且还不能确保修改每一处都没有错误
const 与 #define 的比较
C++ 可以使用两者定义常量,但是前者优点更多
- 前者有数据类型,而后者没有。而编译器可以对前者进行类型安全检查,而对后者只是字符替换,没有安全检查
- 有些集成化的调试工具可以对 const 常量进行调试,但不能对宏常量进行调试
在C++中通常使用 const 完全替代宏常量
常量定义规则
- 需要对外公开的常量放在头文件中,不需要对外公开的常量放在定义文件的头部。为便于管理,可以把不同模块的常量集中存放在一个公共的头文件中
- 如果某一常量与其他常量密切相关,应在定义中包含这种关系,而不是给出一些孤立的值
例如: const float RADIUS = 100;
const float DIAMETER = RADIUS * 2;
类中的常量
- 有些时候我们希望某些常量只在类中有效,而 #define 是全局性的,当然不能了。那么就使用 const 吧。可惜的是,const 数据成员是存在的,只是其含义不是我们所期望的。
- const 数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的,因为类可以创建多个对象,不同对象其 const 数据成员的值可以不同。
那么怎样才能建立在整个类中都恒定的常量呢? 答案是使用 枚举常量
class test{ enum { SIZE1 = 100, SIZE2 = 200 }; int array1[SIZE1]; int array2[SIZE2];};枚举常量不会占用对象存储空间,它们在编译时被全部求值。
但是其存在一个缺点: 它的隐含数据类型是整数,其最大值有限,且不能表示浮点数
- 高质量C++/C编程指南---常量
- 高质量C/C++编程指南--常量
- 高质量C++/C编程指南(第5章 常量)
- 高质量C++/C编程指南 -- 第5章 常量
- 高质量C++/C编程指南 -- 第5章 常量
- 高质量C++/C编程指南 -- 第5章 常量
- 高质量C++/C编程指南 -- 第5章 常量
- 高质量C++/C编程指南 -- 第5章 常量
- 高质量C++/C编程指南 -- 第5章 常量
- 高质量C++/C编程指南--第5章常量
- 高质量C编程指南
- c ++ 常量【高质量c++编程】
- C/C++高质量编程之常量
- 高质量C++/C编程指南(参考文献)
- 高质量C++/C编程指南
- 高质量C++/C编程指南
- 高质量C++/C 编程指南
- 读《高质量C++/C编程指南》
- etmvc+jQuery EasyUI使用教程(一)
- Fedora16 mysql 忘记root用户密码解决办法
- MySQL 常见报错
- C++程序设计-第12周函数序设计上机实践项目
- Subversion的备份和Tortoise工具
- 高质量C/C++编程指南--常量
- 在Linux下安装和使用MySQL
- 谈IFRAME标签的使用作用及技巧
- 那些我曾看过的经典
- SGU-302. BHTML 1.0
- java.lang.UnsupportedOperationException: The application must supply JDBC connections
- 实模式和保护模式
- 一个IO控制2个LED亮灭的最简电路(一个IO两个LED)
- PCA·1——主成分分析