常量:
程序中直接出现的数字与字符串会带来那些麻烦?
1、程序可读性变差,程序员与用户均难以直接理解数字和字符的含义,来源;
2、程序很多地方需要输入相同的字符串时,难以保证不出错,代码体量较大时,则会变成“必然出错”。
3、当数字与字符串需要被修改时则需要同时在很多地方修改,难以维护,出错频繁。
常量的定义方法:#define和const
相互比较:const优与#define
原因:
1、const有数据类型,可被编译器进行类型安全检查并在其作为参数时提高安全性;宏常量只是字符替换,隐患明显。
2、调试工具可以对const常量进行调试而无法对宏常量进行调试。
建议:
1、c++中使用const完全替代宏常量。
定义常量的规则:
1、需要对外公开的常量放在头文件中,不需要对外公开的常量放在定义文件的头部,为便于管理,可以把不同模块的常量集中存放在一个公共的头文件中。
2、如果某一常量和其他常量密切相关,应在定义中包含这种关系,而不应给出一些孤立的值,名称全大写。
如:const float RADIUS = 100;
const float DIAMETER = RADIUS * 2;
类中的常量:
类中常量同样可以用const实现,而其作用是:在某个类的对象中保持为常量,而因类具体对象初始化的不同而在对象之间不同。
同时注意类中的const常量只能在初始化列表中进行初始化,不可在类数据声明时初始化,否则编译器会报错。
如:
class Test
{
public:
Test():VALUE(10)
{
}
private:
const int VALUE;
}
建立在整个类中恒定的常量:枚举常量
class Test
{
public:
private:
enum
{
SIZE1 = 100,
SIZE2 = 200
}
int iarrValue[SIZE1];
int iarrValue[SIZE2];
}