zoukankan      html  css  js  c++  java
  • Effective C++ 条款二 用编译器替换预编译器

    /************************************************************************/
    /*                  C++条款二:用编译器替换预编译器                     */
    /************************************************************************/
     
    #include <iostream>
    using namespace std;
     
     class GamePlayer
    {
    private:
        static const int NumTurns = 5;//常量声明式
        enum {NumTurns = 5};//比较像#define,同样无法获得其地址。但const可以。
        int scores[NumTurns];
    };
     
     
     const int GamePlayer::NumTurns;//NumTurns的定义
     //注:我们无法利用#define获得一个class的专属常量,它不能够提供任何封装,也无作用域的概念
     //当然,我们也可以将static初值放在定义式里面。
     
     //当你的编译器不支持in class 初值设定的话,你就只能用enum 了。
     
     
     //宏函数调用类似于内联函数的使用
     
     template <typename T>
     inline void callWithMax(const T& a, const T& b)
     {
         f(a > b ? a : b);//a and b 中的较大者调用函数F。
     }
     //不过有了const enum  inline,我们对#define需求降低了,但#include等还是必需的
     
     请记住:
     1、对于单纯常量,最好以const对象或enum替换#define
     2、对于形似函数的宏,或者称之为宏函数,最好改用inline函数替换#define
  • 相关阅读:
    js 获取asp.net TextBox值
    项目笔记一
    如何取GridView中隐藏列的值
    使用bablepolyfill
    border: 0.5px
    选择查询固定位置的数据
    SQL用户数据库权限设置
    Java.1 HelloWorld的分析
    Java.2 面向对象
    【drupal实践】windows下drupal7.22develop版本安装
  • 原文地址:https://www.cnblogs.com/zhuxuekui/p/3914038.html
Copyright © 2011-2022 走看看