const对象一旦创建后,其值就不可以改变,所以const对象必须初始化。与非const的类型比较,主要区别在于const类型对象执行但是不改变其操作内容。
在默认状态下,const只在文件内有效。在默认状况下,const定义的对象仅限定在文件类起作用,当多个文件中出现了同名的const时其实等同于在不同文件中分别定义了独立的变量。于是我们只在一个文件中定义const对象,而在其他文件中仅仅声明就可以。对于const对象不管是声明还是定义都加extern关键字,这样只需要定义一次就可以了。如下:
//在file1.h文件里面定义i
extern const int i=3; //将i定义为常量3
//在file2.h中引用i时只要声明就可以,避免重定义
extern const int i;
int a=i; //这样就可以使用i了
const的引用被称为对常量的引用(reference to const),引用类型必须与其所引用的对象保持一致,但是在这里有两个例外,第一个例外是在初始化常量引用时允许用任意表达式作为初始值。允许为一个常量引用绑定非常量对象,字面值,甚至是一个表达式:
int i=42;
const int &r1=i; //正确,此时r1与i绑定
const int &r2=42; // 正确,此时绑定一个字面值42
const int &r3=r1*2; //正确,r3是一个常量引用,绑定字面值84
int &r4=42; //错误,非常量引用不可绑定字面值
时间: 2024-11-03 21:43:20