• effective C++学习一(仅供个人学习记录,本文摘录effective C++)


    条款 1:尽量用 const 和 inline 而不用#define
       #define ASPECT_RATIO 1.653 编译器会永远也看不到 ASPECT_RATIO 这个符号名,因为在源码进入编译器 之前,它会被预处理程序去掉,于是 ASPECT_RATIO 不会加入到符号列表中。 如果涉及到这个常量的代码在编译时报错,就会很令人费解,因为报错信息指 的是 1.653,而不是 ASPECT_RATIO。

     解决这个问题的方案很简单:不用预处理宏,定义一个常量:
        const double ASPECT_RATIO = 1.653;

    除了指针所指的类型要定义成 const 外,重要的是指针也 经常要定义成 const。例如,要在头文件中定义一个基于 char*的字符串常量, 你要写两次 const:
        const char * const authorName = "Scott Meyers";

    ,定义某个类(class)的常量一般也很方便,只有一点点不同。要把常 量限制在类中,首先要使它成为类的成员;为了保证常量最多只有一份拷贝,
    还要把它定义为静态成员:
        class GamePlayer {
        private:
          static const int NUM_TURNS = 5;    // constant declaration
          int scores[NUM_TURNS];             // use of constant
          ...
    }; 

       #define max(a,b) ((a) > (b) ? (a) : (b)) 这个语句有很多缺陷,

      template<class T>
        inline const T& max(const T& a, const T& b)
        { return a > b ? a : b; }
     

  • 相关阅读:
    harbor私有仓库搭建
    为普通用户添加sudo权限
    进程节点占用磁盘空间
    influxdb做prometheus永久存储
    prometheus监控linux进程
    Redis一主两从搭建
    ELK搭建
    redis geo操作
    k8s 1.16.3 yaml声明变化
    k8s启动Pod遇到CrashLoopBackOff的解决方法
  • 原文地址:https://www.cnblogs.com/zhougong/p/8810519.html
Copyright © 2020-2023  润新知