c const複習總結

2021-08-21 10:35:19 字數 2548 閱讀 3411

const 是constant的縮寫,本意是不變的,不易改變的意思。

const 在c++中是用來修飾內建型別變數,自定義物件,成員函式,返回值,函式引數

一、const修飾普通型別的變數。

const 修飾指標變數有以下三種情況。

a:const 修飾指標指向的內容,則內容為不可變數。

b:const 修飾指標,則指標為不可變數。

c:const 修飾指標和指標指向的內容,則指標和指標指向的內容都為不可變數。

int *p = 8;

因為const位於*號的左邊。如:

1

int a = 8;2

3int* const p = &a;

45 *p = 9; //

it』s right67

int b = 7;8

9 p = &b; //

it』s wrong

因為const位於*號的右邊。

如:

1

int a = 8;2

3const

int * const p = &a;

45

三、const引數傳遞和函式返回值。

對於const修飾函式引數可以分為三種情況。

(1):值傳遞的const修飾傳遞,一般這種情況不需要const修飾,因為函式會自動產生臨時變數複製實參值。

(2):

b:當const引數為指標時,可以防止指標被意外篡改。

1 #include2

3using

namespace

std;45

void cpf(int *consta)6

71415int main(void)16

17

c:自定義型別的引數傳遞,需要臨時物件複製引數,對於臨時物件的構造,需要呼叫建構函式,比較浪費時間,因此我們採取const外加引用傳遞的方法。

並且對於一般的int ,double等內建型別,我們不採用引用的傳遞方式。

1 #include2

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

//結果輸出 8

四、const修飾類成員函式.

const 修飾類成員函式,其目的是防止成員函式修改被呼叫物件的值,如果我們不想修改乙個呼叫物件的值,所有的成員函式都應當宣告為const成員函式。注意:const關鍵字不能與static關鍵字同時使用,因為static關鍵字修飾靜態成員函式,靜態成員函式不含有this指標,即不能例項化,const成員函式必須具體到某一例項。

下面的get_cm()const;函式用到了const成員函式

1 #include2

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

如果get_cm()去掉const修飾,則cmf傳遞的const _tt即使沒有改變物件的值,編譯器也認為函式會改變物件的值,所以我們盡量按照要求將所有的不需要改變物件內容的函式都作為const成員函式。

如果有個成員函式想修改物件中的某乙個成員怎麼辦?這時我們可以使用mutable關鍵字修飾這個成員,mutable的意思也是易變的,容易改變的意思,被mutable關鍵字修飾的成員可以處於不斷變化中,如下面的例子。

1 #include2

using

namespace

std;

3class

test47

void kf()const812

private:13

int_cm;

14 mutable int

_ct;

15};

1617

int main(void)18

這裡我們在kf()const中通過++_ct;修改_ct的值,但是通過++_cm修改_cm則會報錯。因為++_cm沒有用mutable

修飾。

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 不能做左...