zoukankan      html  css  js  c++  java
  • effective c++的第02个条款

    1.尽可能的用const、enum、inline替代#define 或者说“宁可用编译器处理也不会让预处理器处理好”。

    const double AspectRatio = 1.653 替代 #define ASPECT_RATIO 1.653

    理由:AspectRatio是编译器实实在在看到的变量,编译时如果有误操作能够通过编译提示快速定位。
    2.定义指针常量时应该

    const char* const name = “cxue”

    3.在类中定义常量时

    class A
    {
        private:
            static const int Number = 100;
           .....
    
    }

    理由:首先我们使用const声明来确定它是一个不可以改变的常量,其次我们用static来确定这个变量只实例化一次。值得注意的是#define不能创建一个class专属常量。
    但是旧的编译器一般不支持上述语法,我们可以这样写

    在头文件内
    class A
    {
        privatestatic const int Number;
        ....
    
    }
    
    在实现文件内
    const  int A::Number = 5;

    4.the enum hack法则
    一般常量可以这样写

    class A
    {
        privateenum{ number = 5};
        ...
    }

    理由:1)enum hack更像#define 我们容易理解,2)取一个const的地址是合法的,而取一个enum的地址是不合法的。

  • 相关阅读:
    Redis 数据类型
    Redis 配置
    Redis 安装
    Redis 简介
    MongoDB 自动增长
    MongoDB 固定集合
    IDEA安装
    云市场 > 软件服务 > 建站系统 > 建站模板-官网企业套餐建站模板-官网企业套餐
    腾讯云SSL证书管理
    4-1 创建项目,并了解项目目录下部分文件的作用
  • 原文地址:https://www.cnblogs.com/onlycxue/p/2987384.html
Copyright © 2011-2022 走看看