如果关键字const出现在*左边,表示被指物是常量;如果出现在*右边,表示指针本身是常量;如果出现在*两边,表示被指物和指针都是常量。
char greeting[] = "Hello"
char *p = greeting; // non-const pointer, non-const data
const char* p = greeting; // non-const pointer, const data
char* const p = greeting; // const pointer, non-const data
const char* const p = greeting; // const pointer, const data
迭代器:
const修饰迭代器:表示迭代器不得指向不同的东西,但所指向的东西是可以改变的,相当于T* const
如果希望迭代器指向的东西不可改动,需要使用const_iterator,即相当于const T*
std::vector<int> vec;
const std::vector<int>::iterator iter = vec.begin() // semi to T* const
*iter = 10; // OK
++iter; // Error, iter is const
std::vector<int>::const_iterator citer = vec.begin() // citer is like const T*
*citer = 10; // Error, *citer is const
++citer; // OK