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

首頁 > 編程 > C++ > 正文

C/C++中CONST用法總結(推薦)

2020-01-26 14:01:40
字體:
來源:轉載
供稿:網友

1、修飾常量時:

const int temp1; //temp1為常量,不可變  int const temp2; //temp2為常量,不可變

2、修飾指針時:

  主要看const在*的前后,在前則指針指向的內容為常量,在后則指針本身為常量;

const int *ptr;  //*ptr為常量;  int const *ptr;  //*ptr為常量;  int* const ptr;  //ptr為常量;  const int * const ptr;  //*ptr、ptr均為常量;

3、const修飾類對象時:

  const修飾類對象時,其對象中的任何成員都不能被修改。const修飾的對象,該對象的任何非const成員函數都不能調用該對象,因為任何非const成員函數都會有修改成員變量的可能。

class TEMP{    void func1();    void func2() const;  }  const TEMP temp;  temp.func1(); //錯誤;  temp.func2(); //正確;

4、const修飾成員變量:

  const修飾的成員變量不能被修改,同時只能在初始化列表中被初始化,因為常量只能被初始化,不能被賦值;

  賦值是使用新值覆蓋舊值構造函數是先為其開辟空間然后為其賦值,不是初始化;而初始化列表開辟空間和初始化是同時完成的,直接給與一個值,所以const成員變量一定要在初始化列表中完成。

class TEMP{    const int val;          TEMP(int x)val(x){};  //只能在初始化列表中賦值;  }

5、const修飾類的成員函數

  const成員函數表示該成員函數不能修改類對象中的任何非const成員變量。一般const寫在函數的后面,形如:void func() const;

  如果某個成員函數不會修改成員變量,那么最好將其聲明為const,因為const成員函數不會對數據進行修改,如果修改,編譯器將會報錯;

class TEMP{    void func()const; //常成員函數,不能修改對象中的成員變量,也不能調用類中任何非const成員函數;  }

  對于const類對象,只能調用類中的const成員函數,所以const修飾成員函數的作用主要就是限制對const對象的使用。

6、const在函數聲明中的使用:

  在函數聲明中,const可以修飾函數的返回值,也可以修飾具體某一個形參;

  修飾形參時,用相應的變量初始化const常量,在函數體內,按照const所修飾的部分進行常量化;

  修飾函數返回值時,一般情況下,const修飾返回值多用于操作符的重載。通常不建議用const修飾函數的返回值類型為某個對象或某個對象引用的情況;

7、const常量與define宏定義的區別:

  1)處理階段不同:

  define是在預處理階段,define常量從未被編譯器看見,因為在預處理截斷就已經替換了;

  const常量在編譯階段使用。

  2)類型和安全檢查不同

  define沒有類型,不做任何檢查,僅僅是字符替換,沒有類型安全檢查,并且在字符替換時可能會產生意料不到的錯誤

  const常量有明確的類型,在編譯階段會進行類型檢查;

  3)存儲方式不同

  define是字符替換,有多少地方使用,就會替換多少次,不會分配內存;

  編譯器通常不會為const常量分配空間,只是將它們保存在符號表內,使他們成為一個編譯期間的一個常量,沒有讀取內存的操作,效率也很高;

8、mutable關鍵字:

  在C++中,mutable是為了突破const的限制而設置的。被mutable修飾的變量,將永遠處于可變的狀態,即使在一個const函數中,甚至結構體變量或者類對象為const,其mutable成員也可以被修改:

class ST {     public:    int a;     mutable int showCount;     void Show()const;   };  void ST::Show()const{     //a=1;//錯誤,不能在const成員函數中修改普通變量     showCount++;//正確   }

  mutable只能修飾非靜態數據成員;

9、const_cast:

  用于修改類型的const或volatile屬性。

  用法:

:const_cast<type_id> (expression)

  該運算符用來修改類型的const或volatile屬性。除了const 或volatile修飾之外, type_id和expression的類型是一樣的。

  1)常量指針被轉化成非常量的指針,并且仍然指向原來的對象;

  2)常量引用被轉換成非常量的引用,并且仍然指向原來的對象;

  3)const_cast一般用于修改底指針。如const char *p形式。
 
建議:

  1、應該盡可能使用const,它會允許你指定一個語義約束(也就是指定一個不能被改動的對象),而編譯器會強制實施這項約束。它允許你告訴編譯器和其他程序員某值應該保持不變。

  2、將某些東西聲明為const可幫助編譯器偵測出錯誤用法。const可被施加于任何作用域內的對象、函數參數、函數返回類型、成員函數本體;

  3、編譯器強制實施bitwise constness,但你編寫程序時應該使用“概念上的常量性”(conceptual constness);

  4、當const和non_const成員函數有著實質等價的實現時,令non-const版本調用const版本可避免代碼重復;

以上所述是小編給大家介紹的C/C++中CONST用法總結,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人黄色av免费在线观看| 欧美视频二区36p| 欧美丝袜美女中出在线| 亚洲精品黄网在线观看| 亚洲精品成人免费| 爽爽爽爽爽爽爽成人免费观看| 欧美中文在线视频| 欧美电影《睫毛膏》| 2019中文字幕全在线观看| 国产精品羞羞答答| 日韩黄色在线免费观看| 国产精品第七影院| 亚洲精品白浆高清久久久久久| 日本欧美在线视频| 91精品在线影院| 日韩在线观看你懂的| 色樱桃影院亚洲精品影院| 日韩精品免费在线视频观看| 色综合导航网站| 日韩精品极品视频免费观看| 亚洲精品视频免费在线观看| 欧美日韩高清区| 性亚洲最疯狂xxxx高清| 国产欧美va欧美va香蕉在| 日韩电影在线观看免费| 精品人伦一区二区三区蜜桃免费| 国产欧美一区二区三区在线看| 久久国产精品偷| 91高清视频在线免费观看| 国产91免费观看| 精品女同一区二区三区在线播放| 国产精品影片在线观看| 在线播放亚洲激情| 91中文字幕一区| 国产精品福利久久久| 亚洲激情视频网| 国产欧美日韩专区发布| 日韩欧美在线国产| 午夜精品一区二区三区在线| 2024亚洲男人天堂| 亚洲天堂免费观看| 欧美激情xxxx性bbbb| 国产美女91呻吟求| 国产精品久久在线观看| 亚洲国产欧美在线成人app| 深夜福利日韩在线看| 亚洲精品视频免费在线观看| 91成人精品网站| 成人免费看片视频| 国产精品扒开腿做爽爽爽的视频| 欧美大成色www永久网站婷| 欧美性猛交xxxx久久久| 成人午夜高潮视频| 欧美—级高清免费播放| 日韩欧美高清在线视频| 欧美激情18p| 在线播放日韩欧美| 国产精品久久一区| 91精品国产91久久久久久吃药| 岛国av午夜精品| 亚洲人成电影在线| 国产婷婷97碰碰久久人人蜜臀| 亚洲欧美国产va在线影院| 91亚洲va在线va天堂va国| 欧美国产视频一区二区| 久久久久久久久久久91| 揄拍成人国产精品视频| 日韩一区在线视频| 久久综合色影院| 91成人国产在线观看| 欧美成人精品一区二区| 66m—66摸成人免费视频| 国产精品亚发布| 97精品欧美一区二区三区| 2019亚洲日韩新视频| 91精品国产色综合| 亚洲欧美国产制服动漫| 亚洲国产成人久久综合一区| 中文字幕欧美日韩在线| 欧美精品免费播放| 日韩有码视频在线| 68精品久久久久久欧美| 国内精品美女av在线播放| 成人性教育视频在线观看| 69av在线视频| 久99九色视频在线观看| 91久久久久久久| 久久久人成影片一区二区三区观看| 亚洲肉体裸体xxxx137| 日韩av免费看| 亚洲精品国精品久久99热一| 国产日韩欧美自拍| 岛国视频午夜一区免费在线观看| 国产精品第2页| 久久国产精品久久久久久| 国内精品久久久久久久| 久久精品成人欧美大片古装| 国产精品91久久| 91精品国产亚洲| 亚洲国产精久久久久久| 97在线观看免费高清| 麻豆国产va免费精品高清在线| 欧美视频不卡中文| 亚洲视屏在线播放| 在线精品播放av| 午夜免费在线观看精品视频| 日韩精品一区二区视频| 亚洲一区二区国产| 久久影院资源站| 欧美日本精品在线| 成人h视频在线观看播放| 色青青草原桃花久久综合| 久久久亚洲影院你懂的| 精品亚洲男同gayvideo网站| 欧美成人sm免费视频| 国产精品av在线播放| 色噜噜狠狠狠综合曰曰曰88av| 91中文精品字幕在线视频| 欧美激情国产日韩精品一区18| 福利一区视频在线观看| 亚洲精品小视频在线观看| 日韩在线视频网| 2018日韩中文字幕| 日韩视频免费中文字幕| 久久久国产在线视频| 色爱av美腿丝袜综合粉嫩av| 欧美中文字幕在线视频| 国产精品日韩久久久久| 日韩美女视频在线观看| 91精品国产99久久久久久| 国产精品91在线| 一区二区三区动漫| 日本一欧美一欧美一亚洲视频| 欧美日韩一区二区免费在线观看| 欧美俄罗斯性视频| 日韩女优人人人人射在线视频| 亚洲精品一二区| 亚洲国产一区二区三区在线观看| 亚洲自拍偷拍在线| 亚洲女人天堂色在线7777| 色综合久久88色综合天天看泰| 国产日韩欧美电影在线观看| 亚洲欧美日韩视频一区| 欧美成人一区二区三区电影| 国产主播精品在线| 欧美激情综合亚洲一二区| 亚洲黄色片网站| 亚洲精品欧美极品| 91av在线网站| 久久精品国产亚洲精品| 日韩在线观看电影| 最近的2019中文字幕免费一页| 欧美孕妇孕交黑巨大网站| 久久99久久99精品免观看粉嫩| 97精品国产97久久久久久免费| 日韩国产高清污视频在线观看| 中文字幕欧美专区| 亚洲女人天堂色在线7777| 国产黑人绿帽在线第一区| 最近2019好看的中文字幕免费| 日韩精品免费视频| 81精品国产乱码久久久久久| 日韩精品极品在线观看播放免费视频| 这里只有精品在线播放|