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

2019-11-20  本文已影响0人  彳亍cium
# define AspectRatio 1.653  //不建议,可能预编译会遗失

const double AspectRatio = 1.653  //建议

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

对于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的地址
};
上一篇 下一篇

猜你喜欢

热点阅读