高质量C/C++编程指南--常量

来源:互联网 发布:js根据class删除tr 编辑:程序博客网 时间:2024/05/18 01:16

此系列文章实为对《高质量程序设计指南--C++/C语言》的重点摘要总结

本篇总结的为常量


为什么需要常量?

这个问题可以换成为什么不直接使用数字或字符串:

  1. 会使程序的可读性变差。就算程序员自己都可能会忘记了那些数字或字符串是什么意思,更别说阅读者了(哪怕有注释)
  2. 在程序中多处引用同样的数字或字符,难免出现错误
  3. 如果需要修改,而同一数字或字符又在很多的地方被使用。这样会使工作量增大,而且还不能确保修改每一处都没有错误

const 与 #define 的比较

C++ 可以使用两者定义常量,但是前者优点更多

  1. 前者有数据类型,而后者没有。而编译器可以对前者进行类型安全检查,而对后者只是字符替换,没有安全检查
  2. 有些集成化的调试工具可以对 const 常量进行调试,但不能对宏常量进行调试

在C++中通常使用 const 完全替代宏常量


常量定义规则

  1. 需要对外公开的常量放在头文件中,不需要对外公开的常量放在定义文件的头部。为便于管理,可以把不同模块的常量集中存放在一个公共的头文件中
  2. 如果某一常量与其他常量密切相关,应在定义中包含这种关系,而不是给出一些孤立的值 

例如: const   float   RADIUS = 100;

     const   float   DIAMETER = RADIUS * 2;


类中的常量

  1. 有些时候我们希望某些常量只在类中有效,而 #define 是全局性的,当然不能了。那么就使用 const 吧。可惜的是,const 数据成员是存在的,只是其含义不是我们所期望的。
  2. const 数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的,因为类可以创建多个对象,不同对象其 const 数据成员的值可以不同。

那么怎样才能建立在整个类中都恒定的常量呢? 答案是使用 枚举常量

class test{    enum    { SIZE1 = 100,  SIZE2 = 200 };    int    array1[SIZE1];    int    array2[SIZE2];};
枚举常量不会占用对象存储空间,它们在编译时被全部求值。

但是其存在一个缺点: 它的隐含数据类型是整数,其最大值有限,且不能表示浮点数

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 海外留学没有教育部认证怎么办 七过月宝宝便秘怎么办 6个月孩子便秘怎么办 6个月婴儿便秘怎么办 一个多月宝宝两天没拉大便怎么办 7个月宝宝便秘怎么办 9个月宝宝便秘怎么办 六个月宝宝严重便秘怎么办 公司调岗员工不同意怎么办 acca注册一直在审核怎么办 ieee ap二审被拒怎么办 文章投到假期刊怎么办 论文投了假网站怎么办 网上传了虚假的怎么办? 网上做兼职被骗了钱怎么办 通过支付宝扫码被骗了怎么办 支付宝扫二维码被骗怎么办 在is上被骗了怎么办 微信兼职被骗怎么办天涯论坛 公众号不给稿费怎么办 围绕服务改善民生提出怎么办 翰墨香林苑怎么办全产权 西城高铁联名卡怎么办 英语教学系统做题时超时了怎么办 sci被要求撤稿怎么办 论文投稿后初审通过想撤稿怎么办 河南大学读写译挂了怎么办 在职mba双证硕士怎么办户口 电脑开机了出现一些英文单词怎么办 不懂法语想读法语书怎么办 大鱼号文章需要修改怎么办 过了上诉期怎么办申诉 法院判刑后被告逃亡监护人怎么办 二审判决后不服的怎么办 对树木对生物花草过敏怎么办 高一英语成绩差怎么办 文章被同时录用该怎么办 来不及开ei检索证明怎么办 淘宝生产许可编号一定要填怎么办 官网下单被砍单怎么办美卡美私 大学网络课程挂了怎么办