const 限定符,它把一個(gè)對象轉(zhuǎn)換成一個(gè)常量。
創(chuàng)新互聯(lián)建站專注于阜城企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè),成都商城網(wǎng)站開發(fā)。阜城網(wǎng)站建設(shè)公司,為阜城等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
1.》》const與define。兩者都可以用來定義常量,但是const定義時(shí),定義了常量的類型,所以更精確一些。#define只是簡單的文本替換,除了可以定義常量外,還可以用來定義一些簡單的函數(shù),有點(diǎn)類似內(nèi)聯(lián)函數(shù)(Inline)。const和define定義的常量可以放在頭文件里面。(小注:可以多次聲明,但只能定義一次)
2.》》const與指針和引用。
(a)const與指針。
先來看看下面的幾種定義:
intme;
constint*p1=me;//p1可變,*p1不可變,此時(shí)不能用*p1來修改,但是p1可以轉(zhuǎn)向
int*constp2=me;//p2不可變,*p2可變,此時(shí)允許*p2來修改其值,但是p2不能轉(zhuǎn)向。
constint*constp3=me;//p3不可變,*p3也不可變,此時(shí)既不能用*p3來修改其值,也不能轉(zhuǎn)向
(b)指針和引用的區(qū)別很簡單,就是引用更簡潔,更安全。因?yàn)橐寐暶鲿r(shí)必須初始化。 引用更接近c(diǎn)onst指針,一旦與某個(gè)變量關(guān)聯(lián),就將一直效忠于他。
(c)const指針可以接受const和非const地址,但是非const指針只能接受非const地址。所以const指針的能力更強(qiáng)一些,所以盡量多用const指針,這是一種習(xí)慣。
3.》》(a)const與函數(shù)。由于2(c),所以經(jīng)常把函數(shù)的形參類型設(shè)為const,而且多為const 引用。但是這里有一個(gè)限制,不能把不是左值的地址傳遞給引用。(左值包括變量,數(shù)組元素,結(jié)構(gòu)成員,引用,被解除引用的指針等)。 形參是const類型的,說明該函數(shù)將不會修改其值,該函數(shù)便為const函數(shù)。
(b)const與類成員函數(shù)。先看看下面這段代碼:
constStockland=Stock("hyd");
land.show();
land 是常量,但是類成員函數(shù)show無法保證不修改land,所以編譯器將拒絕執(zhí)行該段代碼。除非你能保證show像const函數(shù)一樣,但這需要另外一種語法,即:
void show() const; //聲明
void Stock::show() const{} //定義
(1)可以定義
const
常量
(2)const
可以修飾函數(shù)的參數(shù)、返回值.
詳細(xì)內(nèi)容:
1、什么是const?
常類型是指使用類型修飾符const說明的類型,常類型的變量或?qū)ο蟮闹凳遣荒鼙桓碌摹#ó?dāng)然,我們可以偷梁換柱進(jìn)行更新:)
2、為什么引入const?
const
推出的初始目的,正是為了取代預(yù)編譯指令,消除它的缺點(diǎn),同時(shí)繼承它的優(yōu)點(diǎn)。
3、cons有什么主要的作用?
(1)可以定義const常量,具有不可變性。
例如:
const
int
Max=100;
int
Array[Max];
const就是說這個(gè)函數(shù)操作不會對變量或是對象之類的值有影響 比如你有一個(gè)human類 你現(xiàn)在要得到某個(gè)human類對象A的age 那么肯定是不會因?yàn)槟阆氲玫竭@個(gè)值而改變了age的大小 對吧 那么你就可以寫一個(gè)函數(shù)int getAge()const這樣就好 這么做是為了防止你在函數(shù)中對不應(yīng)該在這里改變的量不小心進(jìn)行了改變。這樣的函數(shù)叫常成員函數(shù)。常成員函數(shù)可以理解為是一個(gè)“只讀”函數(shù),它既不能更改數(shù)據(jù)成員的值,也不能調(diào)用那些能引起數(shù)據(jù)成員值變化的成員函數(shù),只能調(diào)用const成員函數(shù)。
const修飾說明它是一個(gè)常量,它的值是不能被修改的。沒有什么地方是必須要用的,你只要覺得這個(gè)數(shù)字你不會改變就可以用。一般在函數(shù)傳遞參數(shù)中用的比較多,你可以看看C語言的庫函數(shù)參數(shù)中很多都是用const修飾的。
比如字符串拷貝的聲明函數(shù)char *strcpy(char *dest,const char *src); 后邊的形參用了const修飾,在函數(shù)定義中src的值就不能被改變,dest的值就可以被改變,也是一種提示的作用說明字符串是從src拷貝到dest中