Effictive C++學習(一)——概念問題

 

 

不明確行為(undefined behavior):C++中未定義,無法預期運行時會發生什麼狀況。比如,讀取空指針的值,數組訪問超出範圍等等。不明確行為會導致程序結果,有時正確,有時錯誤。

 

 

對於const關鍵字與指針關係的理解:

    以前糾結過這個問題,總是沒有標準,現在明確了,下面幾條:

     A. 以* 號為標準.

     B. 在*左面的const是修飾數據的,如, const  char * pc = "hello" 和 char  const *  pc = "hello"; 兩個表達了同一個意思,都說明 "hello"是一個常量,pc是可變的。這兩種用法都對,就看個人習慣了。

     C.在*右面的const是修飾指針的,如,char * const  pc = "hello";這個說明指向"hello”的指針pc是常量,"hello"是可變的 。

     D.在*左右多有const,如,const char * const pc = "hello";和 char const * const pc = "hello"; 這兩個也是相同的意思,都說明"hello“和pc都是常量,不可變。

 

 

const關鍵字和iterator關係的理解:

     STL迭代器是以指針為根據塑模起來的,聲明iterator為const就像聲明指針為const一樣,表示這個iterator不得指向不同的東西,但他所指的東西的值是可以改變的。如果希望迭代器所指的東西不可被改變,就需要申明const_iterator類型的迭代器了:(截個作者原圖如下)


 

 

 

 

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