C++基础(C++中const的基础介绍)
1、const 引用是指向 const 对象的引用:
const int ival = 1024;
const int &refVal = ival; // ok: both reference and object are const
int &ref2 = ival; // error: non const reference to a const object
可以读取但不能修改 refVal。同理,用 ival 初始化 ref2 也是不合法的。ref2 是普通的非 const 引用,因此可以用来修改 ref2 指向的对象的值。通过 ref2 对 ival 赋值会导致修改 const 对象的值。为阻止这样的修改,需要规定将普通的引用绑定到 const 对象是不合法的。
const 引用可以初始化为不同类型的对象或者初始化为右值,如字面值常量:
int i = 42;
// legal for const references only
const int &r = 42;
const int &r2 = r + i;
同样的初始化对于非 const 引用却是不合法的,而且会导致编译时错误。
即:非 const 引用只能绑定到与该引用同类型的对象。而const 引用则可以绑定到不同但相关的类型的对象或绑定到右值。
2、每种容器类型定义了一种名为 const_iterator 的类型,该类型只能用于读取容器内元素,但不能改变其值。即使用 const_iterator 类型时,我们可以得到一个迭代器,它自身的值可以改变,但不能用来改变其所指向的元素的值。可以对迭代器进行自增以及使用解引用操作符来读取值,但不能对该元素赋值。
例如,如果text是vector 类型,程序员想要遍历它,输出每个元素,可以这样编写程序:
// use const_iterator because we won't change the elements
for (vector::const_iterator iter = text.begin();iter != text.end(); ++iter)
cout
0条评论