美文网首页
Item-1: const,enum,inline替#defin

Item-1: const,enum,inline替#defin

作者: 彳亍cium | 来源:发表于2019-11-20 23:35 被阅读0次
    # define AspectRatio 1.653  //不建议,可能预编译会遗失
    
    const double AspectRatio = 1.653  //建议
    

    当我们用常量替换#define时,有两个特殊情况值得说明:

    • 定义常量指针

      # define authorName "Fengww"   //不建议
      
      const char* const authorName = "Fengww" //指针和所指内容都是const, 弱建议 const std::string authorName("Fengww")  //利用string of c++, 强建议
      
    • class专属常量

    对于define来说不存在类的专属,因为define就是一个全局的符号,所以这种变量的实现如下:

    class Gameplayer{
    private:
        static const int Num = 5; //常量的声明,但是这里赋值了,这种做法只适合静态整数变量
        int score[Num];
    };
    

    上面说的整数是一个可以在声明中赋值定义的特例,那么对于其他的类型变量,就必须用下面的方法来声明和定义

    //类的声明放在头文件
    class Gameplayer{
    private:
        static const double Num ; //常量的声明,但是这里赋值了,这种做法只适合静态整数变量
    };
    // 类中成员的定义放在实现文件
    const double Gameplayer::Num = 1.635
    

    那么现在又存在另一个问题,就是我想向上面那样在类的声明中使用该变量怎么办?那么可以采用下面的enum的方面:

    //类的声明放在头文件
    class Gameplayer{
    private:
        enum {Num = 5} ; // 让Num成为5的一个记号名称,可以
        int scores[Num];  //同样可以利用Num声明一个数组,但无法取得Num的地址
    };
    

    相关文章

      网友评论

          本文标题:Item-1: const,enum,inline替#defin

          本文链接:https://www.haomeiwen.com/subject/nlzaictx.html