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