您好,登錄后才能下訂單哦!
怎么淺析C++中的C++關(guān)鍵字,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
在C++語言中,然后就總結(jié)了許多C++關(guān)鍵字,如果不使用常引用、指針,則須用const_cast<>進行轉(zhuǎn),指向字符char的常指針經(jīng)常用來表示字符串,像windows中的LPCSTR就是const char *。
1. 修飾常量
最基本的用法,用const修飾一個變量,表示這是一個常量,這種用法可以代替C語言里面的宏定義。注意要在聲明時初始化,如果是類的數(shù)據(jù)成員,則在構(gòu)造函數(shù)的初始化列表中初始化。
const int a=999; //定義了常量a,代替宏定義 //const int b; //錯誤,常量定義時要初始化 extern const int c; //外部定義的常量不用初始化了 int const d=0; //與const int等價,寫法習(xí)慣不同而已 const long e=0; //同理,把int換成char、long、類是一樣的 class Cls { public: Cls(int a,int b):_a(a) //常數(shù)成員要在初始化列表初始化 { _b=b; } private: const int _a; int _b; };
2. 修飾引用,指針
對一個C++關(guān)鍵字的引用或指針要用常指針,也就是不能修改所引用、指向的變量。如果不使用常引用、指針,則須用const_cast<>進行轉(zhuǎn)換。指向字符char的常指針經(jīng)常用來表示字符串,像windows中的LPCSTR就是const char *。
const int &g=a; //a的內(nèi)容不能改,所以g(a的引用)也是const //int &h=a; //錯誤 int &i=const_cast<int&>(a); //使用const_cast<>()把常量轉(zhuǎn)成非常量 int const &j=a; //與const int &等價,寫法習(xí)慣不同而已 const int *k=&a; //a的內(nèi)容不能改,所以k(a的指針)也是const int const *l=&a; //與const int *等價,寫法習(xí)慣不同而已 //int *m=&a; //錯誤 const char *n="string"; //字符串“string”內(nèi)部字符不能改變了 char *o="string2"; //字符串“string2”可以修改
3. 修飾對象
如果修飾的是一個對象,則表示該對象的數(shù)據(jù)成員均為常量,并且只能調(diào)用該對象的常成員函數(shù),這一點在后面解釋。綜合1、2、3條得出,const修飾符表示所修飾的內(nèi)存區(qū)域被上了鎖,不能修改。
對一個對象的常引用經(jīng)常用來函數(shù)傳參,當(dāng)函數(shù)參數(shù)為對象是,直接按值傳參會調(diào)用對象拷貝構(gòu)造函數(shù),復(fù)制對象,對程序效率造成影響,所以一般按引用傳參,為了不改變傳入的參數(shù),要加const表示是常引用。
const int &g=a; //a的內(nèi)容不能改,所以g(a的引用)也是const //int &h=a; //錯誤 int &i=const_cast<int&>(a); //使用const_cast<>()把常量轉(zhuǎn)成非常量 int const &j=a; //與const int &等價,寫法習(xí)慣不同而已 const int *k=&a; //a的內(nèi)容不能改,所以k(a的指針)也是const int const *l=&a; //與const int *等價,寫法習(xí)慣不同而已 //int *m=&a; //錯誤 const char *n="string"; //字符串“string”內(nèi)部字符不能改變了 char *o="string2"; //字符串“string2”可以修改
4. 另外一種const修飾指針的方法
也就是著名的const char *和char * const的區(qū)別的問題。const char *前面說過,意思是常指針,char*所指的內(nèi)存區(qū)域不能被修改,用來表示字符串。而char * const的意思指針?biāo)赶虻奈恢貌荒苄薷模?span >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 *是一樣的。
看完上述內(nèi)容,你們掌握怎么淺析C++中的C++關(guān)鍵字的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。