const常量
1、const常量必须在定义的时候初始化,且不能修改。
2、const常量的默认类型为int类型。
3、#define是一个预处理器编译指令。该编译指令告诉预处理器,在程序中来查找并替换,修改后的程序将在这些变量的值替换后被编译。#define采用宏代换方式进行常量的处理,不具有类型检查机制,存在不安全性。
const与指针
const对象的地址只能赋给指向const对象的指针;
指向const对象的指针可以被赋予一个非const对象的地址。
int x = 1;
const int y = 2;
int *p1;
const int *p2;
p1 = &y; //wrong
p2 = &x; //right
const与引用
在定义引用时,可以用const进行限制,使它成为不允许被修改的常量引用。const引用可以用常量初始化,但非const引用不能用常量初始化。
const int &ir = 10;
int &jr = 10; //wrong
编译器在实现常量引用时生成了一个临时对象,然后让引用指向这个对象。但该对象对用户而言,是隐藏的,不能访问。例如上述的语句会转化为:
int temp = 10;
const int &ir = temp;
temp将保持到引用的生命期结束。