1. const T *p
const 修饰的是指针指向的内容,即不要幻想通过p修改p指向的那块内存,当然你可以让p指向新的地方。
例如:
char szTest[] = "const test";
char szTest1[] = "const test1";
const char *p = szTest;
*p = 'C'; // error
p = szTest1; // OK
2.T* const p
const 修饰的是指针本身,意味着p就别想指向新的地方了。
例如:
char szTest[] = "const test";
char szTest1[] = "const test1";
char * const pStr = szTest;
*pStr = 'C'; // OK
pStr = szTest1; // error
3. const T::iterator
T代表某种STL容器,这样的写法,const修饰的就是iterator,即iterator不可移动,但通过iterator可修改其指向的值。
例如:
vector<int> iVector;
iVector.push_back(1);
iVector.push_back(2);
const vector<int>::iterator iter = iVector.begin();
*iter = 10; // OK
iter++; // error
4.T::const_iterator iter
使用const_iterator确保迭代器指向的东西不被修改。
例如:
vector<int> iVector;
iVector.push_back(1);
iVector.push_back(2);
vector<int>::const_iterator cIter = iVector.begin();
*cIter = 10; // error
cIter ++; // OK