美文网首页
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