C++ const作用於指針和迭代器

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章