C++ learning blog (2) 域與生命期

1,scope 局部域,類域,名字空間域。
2, C++的名字解析是由內往外的一個過程,所以如果局部域內出現與全局域中相同的名字,那麼在局部當中將會屏蔽全局域。
3,程序中對於成員的定義一般遵循ODR,因此一般來說把成員的聲明放在頭文件當中;
但是要注意的是對於變量的聲明,要注意加上extern,這個關鍵詞表示這邊只是聲明,不進行任何的內存分配,有其他地方對這個變量進行了定義!
如果既使用了extern又對變量進行了初始化,那麼編譯器也會對該定義進行變量的內存分配。那麼就會把以後的定義標記爲錯誤!
在函數前面使用extern,沒有什麼影響,因爲本身函數的聲明就是隱含着應用了extern 所以加了extern只是變成顯式!
4,頭文件當中可以定義常變量和inline函數,但是要注意的是區別常量指針和指針常量之間的區別,定義在頭文件中的只能是常量指針,即不能改變指針而不是不能改變指針所指向的對象!
5,局部對象:自動對象,寄存器對象(對於一些經常被使用的變量爲了提高效率可以把它聲明爲寄存器變量,但是編譯器並不硬性執行,而是進行選擇的變化),局部靜態對象(域還是局部可是生命期變成了全局!)
靜態局部對象似乎爲節約系統開銷做了準備。不過我認爲這個特性不應該被濫用。只有確實有必要讓對象生命週期跨越多次調用時才應該把它聲明爲靜態(比如統計函數被調用的次數)。否則將提高造成BUG的可能性,使“高效率”的程序成爲空中樓
6,
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章