zoukankan      html  css  js  c++  java
  • 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; }
     

  • 相关阅读:
    Flex通信-Java服务端通信实例
    myeclips破解
    最简单的基于FFmpeg的移动端例子:Android 视频转码器
    Kapacitor行为测试
    mydumper备份原理和使用方法
    csdn课堂学习
    maven 遇到failOnMissingWebXml有关问题解决方法
    Oracle中NVL、NVL2、DECODE函数的用法
    Mybatis 一对多 多对1
    Linux编译ffmpeg
  • 原文地址:https://www.cnblogs.com/zhougong/p/8810519.html
Copyright © 2011-2022 走看看