自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C++中的C++關(guān)鍵字淺析

開發(fā) 后端
下面說明C++中C++關(guān)鍵字的用法,我覺得要真正理解的話必須知道C++的內(nèi)存模型,所以我理解就是要盡量多用const。

C++語言中,然后就總結(jié)了許多C++關(guān)鍵字,如果不使用常引用、指針,則須用const_cast<>進(jìn)行轉(zhuǎn),指向字符char的常指針經(jīng)常用來表示字符串,像windows中的LPCSTR就是const char *。

1. 修飾常量

最基本的用法,用const修飾一個(gè)變量,表示這是一個(gè)常量,這種用法可以代替C語言里面的宏定義。注意要在聲明時(shí)初始化,如果是類的數(shù)據(jù)成員,則在構(gòu)造函數(shù)的初始化列表中初始化。

  1. const int a=999;    //定義了常量a,代替宏定義  
  2. //const int b;        //錯(cuò)誤,常量定義時(shí)要初始化  
  3. extern const int c;    //外部定義的常量不用初始化了  
  4. int const d=0;        //與const int等價(jià),寫法習(xí)慣不同而已  
  5. const long e=0;        //同理,把int換成char、long、類是一樣的  
  6.  
  7. class Cls  
  8. {  
  9. public:  
  10.     Cls(int a,int b):_a(a)    //常數(shù)成員要在初始化列表初始化  
  11.     {  
  12.         _b=b;  
  13.     }  
  14. private:  
  15.     const int _a;  
  16.     int _b;  
  17. }; 

2. 修飾引用,指針

對(duì)一個(gè)C++關(guān)鍵字的引用或指針要用常指針,也就是不能修改所引用、指向的變量。如果不使用常引用、指針,則須用const_cast<>進(jìn)行轉(zhuǎn)換。指向字符char的常指針經(jīng)常用來表示字符串,像windows中的LPCSTR就是const char *。

  1. const int &g=a;            //a的內(nèi)容不能改,所以g(a的引用)也是const  
  2. //int &h=a;            //錯(cuò)誤  
  3. int &i=const_cast<int&>(a);    //使用const_cast<>()把常量轉(zhuǎn)成非常量  
  4. int const &j=a;            //與const int &等價(jià),寫法習(xí)慣不同而已  
  5.  
  6. const int *k=&a;        //a的內(nèi)容不能改,所以k(a的指針)也是const  
  7. int const *l=&a;        //與const int *等價(jià),寫法習(xí)慣不同而已  
  8. //int *m=&a;            //錯(cuò)誤  
  9. const char *n="string";        //字符串“string”內(nèi)部字符不能改變了  
  10. char *o="string2";        //字符串“string2”可以修改 

3. 修飾對(duì)象

如果修飾的是一個(gè)對(duì)象,則表示該對(duì)象的數(shù)據(jù)成員均為常量,并且只能調(diào)用該對(duì)象的常成員函數(shù),這一點(diǎn)在后面解釋。綜合1、2、3條得出,const修飾符表示所修飾的內(nèi)存區(qū)域被上了鎖,不能修改。

對(duì)一個(gè)對(duì)象的常引用經(jīng)常用來函數(shù)傳參,當(dāng)函數(shù)參數(shù)為對(duì)象是,直接按值傳參會(huì)調(diào)用對(duì)象拷貝構(gòu)造函數(shù),復(fù)制對(duì)象,對(duì)程序效率造成影響,所以一般按引用傳參,為了不改變傳入的參數(shù),要加const表示是常引用。

  1. const int &g=a;            //a的內(nèi)容不能改,所以g(a的引用)也是const  
  2. //int &h=a;            //錯(cuò)誤  
  3. int &i=const_cast<int&>(a);    //使用const_cast<>()把常量轉(zhuǎn)成非常量  
  4. int const &j=a;            //與const int &等價(jià),寫法習(xí)慣不同而已  
  5.  
  6. const int *k=&a;        //a的內(nèi)容不能改,所以k(a的指針)也是const  
  7. int const *l=&a;        //與const int *等價(jià),寫法習(xí)慣不同而已  
  8. //int *m=&a;            //錯(cuò)誤  
  9. const char *n="string";        //字符串“string”內(nèi)部字符不能改變了  
  10. char *o="string2";        //字符串“string2”可以修改 

4. 另外一種const修飾指針的方法

也就是著名的const char *和char * const的區(qū)別的問題。const char *前面說過,意思是常指針,char*所指的內(nèi)存區(qū)域不能被修改,用來表示字符串。而char * const的意思指針?biāo)赶虻奈恢貌荒苄薷模?FONT>C++關(guān)鍵字也就是該指針不能指向其他內(nèi)存區(qū)域了,這和引用很像,char * const相當(dāng)于char &,所以常引用const char &相當(dāng)于const char * const,也就是指針指向誰不可變,指針指向的內(nèi)容也不可變。注意const是寫在了*的前面還是后面,這是***區(qū)別,char const *的意思和const char *是一樣的。

【編輯推薦】

  1. C與C++中標(biāo)準(zhǔn)輸入實(shí)現(xiàn)方式上的一點(diǎn)區(qū)別
  2. C++編譯器如何對(duì)Const常量進(jìn)行分配存儲(chǔ)空間
  3. C++庫設(shè)計(jì)的基本構(gòu)思與方法
  4. 玩轉(zhuǎn)C++語言的幾種方法
  5. 如何更好的進(jìn)行C++代碼編制
責(zé)任編輯:chenqingxiang 來源: CSDN
相關(guān)推薦

2023-11-19 22:52:42

2011-07-14 23:14:42

C++static

2024-02-23 18:04:37

C++const關(guān)鍵字

2011-04-21 16:57:56

staticextern

2024-01-15 10:41:31

C++關(guān)鍵字開發(fā)

2024-04-08 11:35:34

C++static關(guān)鍵字

2024-01-25 11:36:08

C++構(gòu)造函數(shù)關(guān)鍵字

2023-10-04 00:04:00

C++extern

2010-01-21 09:34:57

C++語法

2010-01-27 16:05:06

C++堆棧

2010-02-05 15:51:06

C++ explici

2011-04-11 15:06:22

C++關(guān)鍵字

2010-02-01 14:46:53

C++關(guān)鍵字

2010-02-02 14:27:54

C++ static關(guān)

2024-03-15 11:52:03

C++關(guān)鍵字編程

2010-01-20 10:19:55

C++數(shù)組

2010-01-27 17:16:52

C++構(gòu)造函數(shù)

2009-08-13 17:44:34

C# using關(guān)鍵字

2024-08-06 16:28:57

2024-08-16 09:06:03

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)