常量
C语言中用#define 来定义常量(宏常量)
C++中除了用#define 之外,还可以使用const 来定义常量(const常量)
1. 使用目的:
程序的可读性增强
输入同样的数字或者字符串更加方便
如果要进行修改,只需要修改定义的常量即可,操作方便
2. const 与#define 的比较
const 常量有数据类型,宏常量没有数据类型。
编译器可以对const常量进行类型安全检查,宏常量只能进行简单的字符替换,而且可能产生边界效应
有些集成化的调试工具可以对const 常量进行调试,但是不能对宏常量进行调试
C++中const 常量完全取代宏常量。
3. 类中的常量(重点关注)
#define 定义的常量是全局的,但我们只希望它在某个类中有效,只能用const 来修饰数据成员,但是含义是:const 数据成员只在某个对象生存期内是常量,但是对于整个类来说却是可变的,因为类可以创建多个对象,不同的对象const 数据成员不同
!!不能在类声明中初始化const数据成员
结果生成失败
const 数据成员初始化只能在类构造函数的初始化表中进行
class A
{
public:
const int SIZE;
A(int size):SIZE(size)//只能在类的初始化表里进行
{
cout<<"A::A(int)"<<endl;
}
~A()
{
cout<<"A::~A()"<<endl;
}
private:
int m;
};
void main()
{
A a(100);
A b(200);
}
结果运行成功。
建立在整个类中都恒定的常量:用枚举常量来实现
enum{ SIZE1 = 10, SIZE2 = 20};
枚举常量不会占用对象的存储空间,在编译时被全部求值,
但是枚举的隐含数据类型是整型,不能表示浮点数