日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++primer :const限定符

發布時間:2025/3/15 c/c++ 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++primer :const限定符 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.問題引入

<span style="font-size:18px;"><span style="font-size:18px;">for( int index =0; index != 512; ++ index){//......</span></span>上面的for循環代碼有兩個問題,都和512作為循環上界有關。 第一個問題是程序的可讀性。比較index和512有什么意義呢???循環在做什么工作呢???也就是說512是什么東西呢???在本例中,512被稱為魔數(magic number),它的意義在上下文中沒有體現出來,好像這個數是魔術般地從空中出現的。‘ 第二個問題是程序的可維護性。假設這個程序非常龐大,512出現了100次。進一步假設在這100次中,有80次是表示某一特殊緩沖區的大小,剩余20次是用于其它的目的。現在我們需要把緩沖區的大小增大到1024。要實現這一改變,必須檢查每個512出現的位置。此時我們就要仔細勘察哪一處表示緩沖區,哪一處表示其他目的,要知道,錯改一處,都會造成程序的崩潰!!! 解決這兩個問題的方法是使用一個初始化為512的對象: <span style="font-size:18px;">int bufSize = 512; // input buffer size for(int index = 0; index != bufSize; ++index){//...... }</span>我們可以看出,現在是對對象bufSize測試,而不是字面值常量512測試。

2.為什么我們需要const?

定義一個變量代表某一常數的方法仍然有一個嚴重的問題。即 bufSize 是可以被修改的。bufSize 可能被有意或無意地修改。const 限定符提供了一個解決辦法,它把一個對象轉換成一個常量。
<span style="font-size:18px;">const int bufSize = 512; //input buffer size</span>定義bufSixe為常量并初始化為512.變量bufSize仍然為一個左值。但是現在這個左值是不可以修改的,修改任何的bufSize的嘗試都會導致編譯錯誤。<span style="font-size:18px;">bufSize = 0; // error: attemp to write to const object</span>因為常量定義后就不能被修改,所以定義時必須初始化!!!
<span style="font-size:18px;">const std::string hi = "hello";// ok:innitialized const int i,j=0;//error:i is uninitialized const</span>

3.const對象默認為文件的局部變量

在全局作用域里定義非 const 變量時,它在整個程序中都可以訪問。我們可以把一個非 const 變更定義在一個文件中,假設已經做了合適的聲明,就可在另外的文件中使用這個變量: <span style="font-size:18px;">// file_1.cc int counter; // defination // file_2.cc extern int counter; // uses counter from file_1 ++counter; //increments counter defined in file_1</span>與其他變量不同,除非特別說明,在全局作用域聲明的 const 變量是定義該對象的文件的局部變量。此變量只存在于那個文件中,不能被其他文件訪問
<span style="font-size:18px;">// file_1.cc // defines and initialize a const that is accessible to other files extern const int bufSize = fcn(); // file_2.cc extern const int bufSize; // uses bufSize from file_1 for(int index = 0; index != bufSize; ++ index){//...... }</span>?在上述程序中,file_1.cc通過函數fcn的返回值來定義和初始化bufSize。而bufSize又被定義為外部類型extern,這就意味著bufSize可以再其他的文件中被使用。file_2.cc中bufSize同樣聲明為外部類型extern;不能被初始化。 區別:非const變量會被自動默認為extern。而要使const變量能夠在其他的文件中訪問,必須制動他為extern。



















總結

以上是生活随笔為你收集整理的C++primer :const限定符的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。