亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

C++辨析系列談(二)

2019-11-17 05:17:02
字體:
來源:轉載
供稿:網友

  const 是C++中常用的類型修飾符,但我在工作中發現,許多人使用它僅僅是想當然爾,這樣,有時也會用對,但在某些微妙的場合,可就沒那么幸運了,究其實質原由,大多因為沒有搞清本源。故在本篇中我將對const進行辨析。溯其本源,究其實質,希望能對大家理解const有所幫助,根據思維的承接關系,分為如下幾個部分進行闡述。

C++中為什么會引入const

  C++的提出者當初是基于什么樣的目的引入(或者說保留)const要害字呢?,這是一個有趣又有益的話題,對理解const很有幫助。

1. 大家知道,C++有一個類型嚴格的編譯系統,這使得C++程序的錯誤在編譯階段即可發現許多,從而使得出錯率大為減少,因此,也成為了C++與C相比,有著突出優點的一個方面。

2. C中很常見的預處理指令 #define VariableName VariableValue 可以很方便地進行值替代,這種值替代至少在三個方面優點突出:

  一是避免了意義模糊的數字出現,使得程序語義流暢清楚,如下例:
  #define USER_NUM_MAX 107 這樣就避免了直接使用107帶來的困惑。

  二是可以很方便地進行參數的調整與修改,如上例,當人數由107變為201時,進改動此處即可,

  三是提高了程序的執行效率,由于使用了預編譯器進行值替代,并不需要為這些常量分配存儲空間,所以執行的效率較高。

  鑒于以上的優點,這種預定義指令的使用在程序中隨處可見。

3. 說到這里,大家可能會迷惑上述的1點、2點與const有什么關系呢?,好,請接著向下看來:

  預處理語句雖然有以上的許多優點,但它有個比較致命的缺點,即,預處理語句僅僅只是簡單值替代,缺乏類型的檢測機制。這樣預處理語句就不能享受C++嚴格類型檢查的好處,從而可能成為引發一系列錯誤的隱患。

4.好了,第一階段結論出來了:
結論: Const 推出的初始目的,正是為了取代預編譯指令,消除它的缺點,同時繼續它的優點。

現在它的形式變成了:

Const DataType VariableName = VariableValue ;為什么const能很好地取代預定義語句?
const 到底有什么大神通,使它可以振臂一揮取代預定義語句呢?

1. 首先,以const 修飾的常量值,具有不可變性,這是它能取代預定義語句的基礎。

2. 第二,很明顯,它也同樣可以避免意義模糊的數字出現,同樣可以很方便地進行參數的調整和修改。

3. 第三,C++的編譯器通常不為普通const常量分配存儲空間,而是將它們保存在符號表中,這使得它成為一個編譯期間的常量,沒有了存儲與讀內存的操作,使得它的效率也很高,同時,這也是它取代預定義語句的重要基礎。

這里,我要提一下,為什么說這一點是也是它能取代預定義語句的基礎,這是因為,編譯器不會去讀存儲的內容,假如編譯器為const分配了存儲空間,它就不能夠成為一個編譯期間的常量了。

4. 最后,const定義也像一個普通的變量定義一樣,它會由編譯器對它進行類型的檢測,消除了預定義語句的隱患。

const 使用情況分類詳析

1.const 用于指針的兩種情況分析:
 int const *A;  //A可變,*A不可變
 int *const A;  //A不可變,*A可變

  分析:const 是一個左結合的類型修飾符,它與其左側的類型修飾符和為一個類型修飾符,所以,int const 限定 *A,不限定A。int *const 限定A,不限定*A。

2.const 限定函數的傳遞值參數:

 void Fun(const int Var);

  分析:上述寫法限定參數在函數體中不可被改變。由值傳遞的特點可知,Var在函數體中的改變不會影響到函數外部。所以,此限定與函數的使用者無關,僅與函數的編寫者有關。 photoshop教程 數據結構 五筆輸入法專題 QQ病毒專題 共享上網專題 Google工具和服務專題
  結論:最好在函數的內部進行限定,對外部調用者屏蔽,以免引起困惑。如可改寫如下:

void Fun(int Var){
const int & VarAlias = Var;

VarAlias ....

.....

}

3.const 限定函數的值型返回值:

const int Fun1();

const MyClass Fun2();

 分析:上述寫法限定函數的返回值不可被更新,當函數返回內部的類型時(如Fun1),已經是一個數值,當然不可被賦值更新,所以,此時const無意義,最好去掉,以免困惑。當函數返回自定義的類型時(如Fun2),這個類型仍然包含可以被賦值的變量成員,所以,此時有意義。

4. 傳遞與返回地址: 此種情況最為常見,由地址變量的特點可知,適當使用const,意義昭然。

5. const 限定類的成員函數:

class ClassName {

 public:

  int Fun() const;

 .....

}

  注重:采用此種const 后置的形式是一種規定,亦為了不引起混淆。在此函數的聲明中和定義中均要使用const,因為const已經成為類型信息的一部分。

獲得能力:可以操作常量對象。

失去能力:不能修改類的數據成員,不能在函數中調用其他不是const的函數。

  在本篇中,const方面的知識我講的不多,因為我不想把它變成一本C++的教科書。我只是想具體地闡述它的實質和用處. 我會盡量說的很具體,因為我希望在一種很輕松隨意的氣氛中說出自己的某些想法,究竟,編程也是輕松,快樂人生的一部分。有時候,你會贊嘆這其中的世界原來是如此的精美。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本韩国欧美精品大片卡二| 亚洲成人亚洲激情| 57pao成人永久免费视频| 日韩在线观看免费| 成年人精品视频| 在线观看亚洲视频| 亚洲美女www午夜| 欧美孕妇孕交黑巨大网站| 亚洲精品天天看| 亚洲欧美日韩在线一区| 亚洲成人国产精品| 亚洲国产美女久久久久| 亚洲福利在线观看| 亚洲欧洲日产国码av系列天堂| 精品欧美激情精品一区| 亚洲欧美www| 夜夜嗨av一区二区三区免费区| 最近2019年日本中文免费字幕| 成人午夜在线影院| 欧美性受xxxx白人性爽| 亚洲最大中文字幕| 亚洲人成电影在线| 亚洲高清福利视频| 91日韩在线播放| 精品人伦一区二区三区蜜桃网站| 欧美日韩999| 欧美在线一级va免费观看| 欧美电影免费观看| 日韩欧美a级成人黄色| 欧美肥臀大乳一区二区免费视频| 欧美日在线观看| 91国产高清在线| 亚洲图片在线综合| 日韩av在线免费看| 日韩美女写真福利在线观看| 亚洲春色另类小说| 欧美夫妻性生活xx| 国产日韩欧美视频| 国产精品成久久久久三级| 欧美日韩在线看| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲欧美综合另类中字| 欧美日韩国产一区在线| 中国人与牲禽动交精品| 欧美自拍大量在线观看| 日本国产高清不卡| 亚洲网址你懂得| 国产精品偷伦免费视频观看的| 亚洲欧美综合另类中字| 国产成人97精品免费看片| 国产精品久久久久久久久粉嫩av| 136fldh精品导航福利| 亚洲第一精品福利| 国产精品96久久久久久又黄又硬| 亚洲欧美日韩天堂| 欧美激情第99页| 欧美一区二区三区图| 欧美性jizz18性欧美| 国产精品综合久久久| 日韩av一区二区在线| 亚洲在线视频福利| 在线观看亚洲视频| 欧美日韩高清在线观看| 大胆欧美人体视频| 欧美天天综合色影久久精品| 欧美激情国内偷拍| 国产精品揄拍一区二区| 久久精品国产免费观看| 国产又爽又黄的激情精品视频| 亚洲最大福利视频| 在线观看欧美日韩国产| 亚洲精选在线观看| www国产精品com| 亚洲人高潮女人毛茸茸| 2024亚洲男人天堂| 久久免费视频在线观看| 欧美成人精品一区| 激情成人中文字幕| 国产视频999| 精品无人区太爽高潮在线播放| 久久久久久久999精品视频| 日韩精品在线视频观看| 日韩va亚洲va欧洲va国产| 欧美风情在线观看| 国产成人一区二区| 欧美福利视频在线观看| 亚洲国产精品中文| 欧美中文在线视频| 国产色视频一区| 日本一区二区三区四区视频| 欧美日韩一区二区免费在线观看| 亚洲欧洲高清在线| 欧美日韩中文字幕综合视频| 国产一区二区三区网站| 久久精品99国产精品酒店日本| 日韩欧美高清视频| 日韩精品中文字幕在线| 欧洲s码亚洲m码精品一区| 中文字幕亚洲天堂| 这里只有精品视频| 亚洲欧洲在线视频| 91丨九色丨国产在线| 精品偷拍一区二区三区在线看| 亚洲午夜精品久久久久久久久久久久| 精品小视频在线| 久久久av亚洲男天堂| 成人性生交xxxxx网站| 激情成人在线视频| 成人妇女淫片aaaa视频| 在线成人中文字幕| 最好看的2019的中文字幕视频| 97在线视频国产| 日韩精品免费看| 欧美一区第一页| 精品国产电影一区| 久久99久久99精品免观看粉嫩| 国产日韩精品在线播放| 国产欧美一区二区三区四区| 中文在线资源观看视频网站免费不卡| 青草热久免费精品视频| 欲色天天网综合久久| 欧美一性一乱一交一视频| 免费不卡在线观看av| 国产视频久久久| 亚洲97在线观看| 日韩女优人人人人射在线视频| 97久久精品人搡人人玩| 91高清在线免费观看| 精品亚洲一区二区三区四区五区| 欧美国产日韩中文字幕在线| 日韩在线视频线视频免费网站| 亚洲日韩第一页| 91久久国产综合久久91精品网站| 这里精品视频免费| 国产精品1234| 国产精品激情av电影在线观看| 亚洲资源在线看| 国产精品视频大全| 久久久免费av| 国产精品福利在线观看网址| 国产精品久久久久久久久男| 最近中文字幕2019免费| 国产精品久久久久久久7电影| 97久久精品在线| 高清欧美性猛交| 欧美xxxx做受欧美.88| 欧美午夜xxx| 亚洲精品美女视频| 精品国产乱码久久久久久虫虫漫画| 国产va免费精品高清在线| 欧美成人在线网站| 性欧美在线看片a免费观看| 欧美亚洲视频在线看网址| 欧美精品一本久久男人的天堂| 亚洲午夜精品久久久久久久久久久久| 色偷偷噜噜噜亚洲男人| 国产精品18久久久久久首页狼| 一区二区三区无码高清视频| 欧美在线性爱视频| 色哟哟亚洲精品一区二区| 中文字幕亚洲一区二区三区五十路| 久久久久久久久久久国产| 欧美亚洲视频在线观看| 欧美激情欧美激情在线五月|