const 是constant的縮寫,本意是不變的,不易改變的意思。
const 在c++中是用來修飾內建型別變數,自定義物件,成員函式,返回值,函式引數
一、const修飾普通型別的變數。
const 修飾指標變數有以下三種情況。
a:const 修飾指標指向的內容,則內容為不可變數。
b:const 修飾指標,則指標為不可變數。
c:const 修飾指標和指標指向的內容,則指標和指標指向的內容都為不可變數。
int *p = 8;
因為const位於*號的左邊。如:
1因為const位於*號的右邊。int a = 8;2
3int* const p = &a;
45 *p = 9; //
it』s right67
int b = 7;8
9 p = &b; //
it』s wrong
如:
1三、const引數傳遞和函式返回值。int a = 8;2
3const
int * const p = &a;
45
對於const修飾函式引數可以分為三種情況。
(1):值傳遞的const修飾傳遞,一般這種情況不需要const修飾,因為函式會自動產生臨時變數複製實參值。
(2):
b:當const引數為指標時,可以防止指標被意外篡改。
1 #include2c:自定義型別的引數傳遞,需要臨時物件複製引數,對於臨時物件的構造,需要呼叫建構函式,比較浪費時間,因此我們採取const外加引用傳遞的方法。3using
namespace
std;45
void cpf(int *consta)6
71415int main(void)16
17
並且對於一般的int ,double等內建型別,我們不採用引用的傳遞方式。
1 #include2//結果輸出 83using
namespace
std;45
class
test67
1213 test(int
_m):_cm(_m){}
1415
int get_cm()const
1617
2223
private:24
25int
_cm;
2627
};28
2930
31void cmf(const test&_tt)
3233
3839
int main(void)40
41
四、const修飾類成員函式.
const 修飾類成員函式,其目的是防止成員函式修改被呼叫物件的值,如果我們不想修改乙個呼叫物件的值,所有的成員函式都應當宣告為const成員函式。注意:const關鍵字不能與static關鍵字同時使用,因為static關鍵字修飾靜態成員函式,靜態成員函式不含有this指標,即不能例項化,const成員函式必須具體到某一例項。
下面的get_cm()const;函式用到了const成員函式
1 #include2如果get_cm()去掉const修飾,則cmf傳遞的const _tt即使沒有改變物件的值,編譯器也認為函式會改變物件的值,所以我們盡量按照要求將所有的不需要改變物件內容的函式都作為const成員函式。3using
namespace
std;45
class
test67
1213 test(int
_m):_cm(_m){}
1415
int get_cm()const
1617
2223
private:24
25int
_cm;
2627
};28
2930
31void cmf(const test&_tt)
3233
3839
int main(void)40
41
如果有個成員函式想修改物件中的某乙個成員怎麼辦?這時我們可以使用mutable關鍵字修飾這個成員,mutable的意思也是易變的,容易改變的意思,被mutable關鍵字修飾的成員可以處於不斷變化中,如下面的例子。
1 #include2這裡我們在kf()const中通過++_ct;修改_ct的值,但是通過++_cm修改_cm則會報錯。因為++_cm沒有用mutableusing
namespace
std;
3class
test47
void kf()const812
private:13
int_cm;
14 mutable int
_ct;
15};
1617
int main(void)18
修飾。
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語言中 1.const修飾的是常變數,存放在 段,僅僅是在編譯階段看常變數是否做左值,其他處理和普通變數一樣 2.若修飾全域性變數,其屬性是global。二 c 中 1.const修飾的量稱為常量,在編譯階段將用到常量的地方替換成常量初始化的值 注 1 一定要初始化,因為要做替換 2 不能做左...