zoukankan      html  css  js  c++  java
  • 重读金典------高质量C编程指南(林锐)-------第五章 常量

    5.1  为什么需要常量

    1)为了便于用户理解,增加程序的可读性。

    2)在程序的很多地方都用到同一个常量,用某一个宏常量来定义可以减少错误。

    规则:尽可能的使用含义直观明确的常量来表示程序中多次出现的数字或者字符串

    5.2  #define  vs   const

         一般在C里面一般用#define,而在C++中,更喜欢用const,因为const有很多类型。而define没有类型检查这一说,只是单纯的进行字符替代。

    规则:C++中,程序一般使用const常量而不使用宏常量,即const常量完全取代宏常量。

    5.3  常量定义规则

    规则:需要对外公开的,写在头文件里面,不需要的写在定义文件里面。 当然,有时候为方便管理,也可以存放在一个公共的头文件中。

    规则:如果某一个常量与其他常量密切相关,应该在定义中包含这种关系,而不应给出一些孤立的值。

    const float R = 100;

    const float D = 2 * R;

    5.4  类中的常量

          有时候,我们希望类中的某些数据成员也是常量,但#define 是全局的,不能达到目的。const 修饰也会改变数据成员的值。因为const只在某个对象的生存期内是常量,而对于整个类确是可变的。因为类可以创建多个对象,不同的对象其const数据成员的值可以不同。

          注意一点,我们不能在类声明中初始化const数据成员,因为类的对象未被创建之前,编译器不知道声明中的变量到底是多少。

          但是,我们可以在类的构造函数中实现数据成员的初始化。当然,这只是针对于某个对象而言的。在对象未被实例化之前,类是没有分配空间的。

    image

    class A

    {

         enum{SIZE1 = 100, SIZE2 = 200;}//枚举常量

         int  array1[SIZE1];

         int  array2[SIZE2];

    }

         枚举常量不会占用对象的存储空间,他们在编译时被全部求值。缺点是:只能表示整数值,且最大值有限,不可表示浮点数。

      

     

  • 相关阅读:
    JVM参数默认值列表
    垃圾回收G1日志解析
    《深入理解JAVA虚拟机》垃圾回收时为什么会停顿
    《深入理解JAVA虚拟机》JDK的垃圾收集算法
    什么才是技术?
    Lodash使用示例(比较全)
    MSCL超级工具类(C#),开发人员必备,开发利器
    刷新SqlServer数据库中所有的视图
    Sql Server 2014/2012/2008/2005 数据库还原出现 3154错误的解决办法
    C#中执行批处理文件(.bat),执行数据库相关操作
  • 原文地址:https://www.cnblogs.com/zhuxuekui/p/3586236.html
Copyright © 2011-2022 走看看