C++常量都有哪些,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
創(chuàng)新互聯(lián)自成立以來,一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設(shè)計、做網(wǎng)站、網(wǎng)站建設(shè)、電子商務(wù)、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營銷服務(wù)。公司擁有豐富的網(wǎng)站建設(shè)和互聯(lián)網(wǎng)應(yīng)用系統(tǒng)開發(fā)管理經(jīng)驗、成熟的應(yīng)用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開發(fā)工程師團隊及專業(yè)的網(wǎng)站設(shè)計師團隊。
1.常量形參
當(dāng)形參有頂層const或者底層const的時候,傳給它常量對象或者非常量對象都是可以的,在這里我們主要考慮形參無const, 而實參有const的情況,其實這里也十分簡單,只需要記住一點:底層const的限制,就可以了。
2.常量返回值
這里也很簡單,略過不提。
3.常量成員函數(shù)
常量函數(shù)里的const是用來修飾*this的,其形式如下:
int f() const{```}
然后這里就有意思了
*this的默認(rèn)類型是type *const this,this指針有一個頂層const,但并沒有底層const,由于低層const的限制,有底層const的實參不能拷貝給默認(rèn)版的*this,也就是說常量對象的引用或指針都不能調(diào)用默認(rèn)版的*this成員函數(shù)。
還沒完。。。
剛剛我們已經(jīng)明確了有底層const的實參是無法初始化默認(rèn)版*this,但是擁有頂層const的對象是不是就能初始化默認(rèn)版的*this, 然后調(diào)用函數(shù)呢?
不是。。
//定義一個簡單類student class student{ public: string name; int number; public : student() :name("lili"), number(0){ }//構(gòu)造函數(shù) string Name(){return name;}//非常量成員函數(shù) int Number() const{return number;}//常量成員函數(shù) }; //現(xiàn)在定義一個常量student對象 const student s1; s1.Name();//報錯 s1.Number();//正確
事實上,當(dāng)我們調(diào)用s1.Name()的時候發(fā)生了以下初始化過程:
student *const this=&s1;
此時相當(dāng)于如下過程:
const student *s1; student *const this=s1;
很顯然s1有一個底層const, 而this沒有,初始化失敗。
同理,如果一個實參是 int *const p,那么在初始化this的時候,會轉(zhuǎn)化成const int *const p, 有一個底層const, 初始化失敗。
常量對象,常量對象的指針或者引用都只能調(diào)用常量成員函數(shù)。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。
當(dāng)前名稱:C++常量都有哪些
文章分享:http://aaarwkj.com/article8/jpdoop.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、標(biāo)簽優(yōu)化、網(wǎng)站設(shè)計公司、網(wǎng)頁設(shè)計公司、響應(yīng)式網(wǎng)站、全網(wǎng)營銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)