# 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的地址
};
网友评论