const限定符用來處理符號常量,比如在程式中輸入以下**:
const
int months=
12;
這樣就可以在程式中用months來替代12(12可以代表的含義有很多,使用months可以指出12的含義是什麼)
特點:
常量一旦被初始化之後,其值固定,不被允許修改
由於常量不被允許修改,所以應當在宣告時對const進行初始化,以下**會報錯:
const
int months;
months=12;
const和define
const可以指明常量的型別
const可以將定義限制在特定的函式或者檔案中
const可以用於更加複雜的型別,如陣列
enum與const(強行算是和const沾邊吧)
enum也可以建立符號常量,可以用來替代const,並且允許定義新型別
enum week
;week被作為乙個新的型別的名稱使用,被稱為列舉
monday,tuesday等被作為符號常量,對應整數0
~6,被稱為列舉量
列舉只定義了賦值運算子,並且只能被列舉量賦值,沒有定義算數運算子,因此以下語句中第二條有效,第三四條無效
week today;
today=sunday;
//valid
today=1;
//invalid
today++
;//invalid
const使用的必要性:
首先使用const可以避免無意中對資料修改造成的錯誤,其次const的使用使得函式可以處理const和非cosnt實參,否則就只能接受非const資料
讓指標指向常量物件,防止使用該指標修改所指向的值
將指標宣告為常量,防止改變指標指向的位置
我們可以把const的位址賦值給const指標,但是不能把const的位址賦值給普通指標
const
int week=7;
const
int* pw=
&week;
const
int week=7;
int* pw=
&week;
第一種情況下是合法的,並且week本身不能改變值,也不能夠通過pw來改變week的值
第二種情況是不符合語法規範的
c++中允許非const指標賦值給const指標,但是僅僅當只有一層間接關係的時候(如指標指向基本資料型別時),才能夠把非const指標的位址賦值給const指標
與指標類似的是,當我我們希望通過使用引用傳遞乙個引數給函式使用並且保證這個資料不被修改的時候,我們就需要使用const
例如希望返回a+b的結果,並且不改變ab值,那麼我們在函式原型和函式頭中應使用const
int
sum(
const
int&a,
const
int&b)
;
const與返回物件
我們看下面的例子:假設現在我們有乙個類叫做integer,現在我們需要編寫函式max,使得它返回兩個物件中更大的乙個,有以下兩種寫法:
//返回物件
integer max
(const integer & a,
const integer & b)
//返回const物件的引用
const integer &
max(
const integer & a,
const integer &b)
在以上兩種寫法中,第一種寫法返回物件,返回時需要呼叫類的複製建構函式,第二種寫法返回乙個引用,可以直接賦值不需要呼叫複製建構函式,所以第二種效率更高,並且因為ab都是const,所以返回引用也應該是const。 C const用法總結
const名叫常量限定符,用來限定特定變數,以通知編譯器該變數是不可修改的。使用const,可以避免在函式中對某些不應修改的變數造成可能的改動。非const 變數預設為extern,這樣就不可以被程式其它檔案訪問,要想const變數能夠被在其他的檔案中訪問,必須顯式地指定它為extern,如exte...
c const用法總結
看了好多博主寫的關於const的總結,總是仁者見仁,智者見智,好多博主都多多少少的有一些錯誤,在這總結一下c const的用法,我的文章中也可能會有錯誤,望指正!一.定義常量 1 const修飾變數 int const a 5 const int a 5 這兩種定義方法是一樣的,都是不希望a的值發生...
C const用法簡記
c const允許指定乙個語義約束,編譯器會強制實施這個約束,允許程式設計師告訴編譯器某值是保持不變的。如果在程式設計中確實有某個值保持不變,就應該大膽明確的使用const,這樣可以獲得編譯器的幫助。include using namespace std int main 傳遞過來的引數在函式內不可...