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類型的迭代器了:(截個作者原圖如下)


 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值