C 中const關鍵字的應用,簡單 易懂 實用!

2021-10-06 02:08:44 字數 2457 閱讀 2137

文章稍長,但是舉例都很易懂。

1. 常量

c++用const將物件i定義為乙個常量。定義之後,i的值就不可以再變了,所以i必須在定義時候被初始化。

所以 const int i; //錯誤的,i 必須被初始化 (在c中這種寫法可以,但是這裡只說c++的環境下)

#include

intmain()

2. 代替#define的值替換功能

舉例:

#define number 100
上面這行**是c中典型的值替換手段。

但是c++中這樣寫:

const number =

100;

//或者

const

int number =

100;

這樣寫的好處:

①.明顯的減少**量

②.const可以附帶資料型別(int),但是#define(巨集常量)沒有該功能,只是簡單的字元替換,沒型別檢查,所以在字元替換的時候會出意想不到的錯誤。

3.指標和const

在指標的宣告中,指向const物件的指標和const指標是不一樣的。

舉例:

//注意!!p可以不初始化,它可以指向任何東西。p這個指標指向乙個int型別的數,但是這個數是const屬性。

const

int* p;

//等價於

intconst

*p;//下面的p是個const修飾的指標,所以p必須被初始化。 但是這個p指向的值可以被改變。

int a =1;

int*

const p =

&a;*p =2;

//改變p所指向的值,正確。

4.修飾函式引數及函式返回值

①const修飾成員函式

class

a;

const改變的是this指標。this指標原型別為: a* const(this為類a的指標,我理解為a* const this),被const修飾後變為:const a* const,(第乙個const修飾的就是this指向的物件,我理解為 const a* const this)。

const修飾的成員函式不能呼叫或者修改該類的物件。當然mutable成員可以。

再記最重要的一點:const修飾的成員函式的應用場景。

const物件,指向const物件的指標都且只能呼叫const成員函式。呼叫非const成員函式則會出錯。反過來,非const物件或者指標,都可以呼叫const成員函式和非const成員函式。所以,如果乙個類中沒有const成員函式,當你使用const物件時,這個物件誰都呼叫不了。

舉例:

class

aconst a a1;

//a1物件只可以呼叫fun1成員函式。

const a* a2 =

new a;

//a2指標的呼叫規則也是只可以呼叫fun1函式。

class

b b b1;

//b1可以呼叫bfun1和bfun2

const b b2;

//b2呼叫不了任何成員函式

b* b3 = b2;

//b3是指向const物件b2的指標,也呼叫不了任何成員函式

b& b4 = b2;

//b4是const修飾的b2物件的引用,也呼叫不了任何成員函式。

//總結:無論是const物件(b2),還是指向b2的指標b3,還是b2的引用b4,都無法呼叫非const成員函式。

classc

c c;

c.cfun1()

;//正確

c.cfun2()

;//正確

//總結:非const修飾的物件,可以呼叫const成員函式和非const成員函式。

②const修飾資料成員

const修飾資料成員,記住一點:必須在構造中初始化成員變數

#include

class

a a a;

//此處想要構造乙個物件a,但是程式不會執行。

//因為const修飾的成員變數m_b必須在構造的初始化列表中進行初始化

//修改如下:

class

a//初始化時,初始化const修飾的成員變數,這樣就可以了。

int m_a;

const

int m_b;

}

待續…

const關鍵字應用

const關鍵字應用 欲阻止乙個變數被改變,可使用const,在定義該const變數時,需先初始化,以後就沒有機會改變他了 對指標而言,可以指定指標本身為const,也可以指定指標所指的資料為const,或二者同時指定為const 在乙個函式宣告中,const可以修飾形參表明他是乙個輸入引數,在函式...

C中const關鍵字

const 用法 定義常量,修飾指標 函式的輸入引數和返回值,把定義或者修飾的變數屬性設為唯讀。本質上它只是在全域性資料段或者棧中定義的是乙個唯讀的常量,不是真正位於字串常量區。所以關鍵字const 並不能把變數變成真正的常量,事實上還是可以改變 const 定義的變數的值。const 的目的是為了...

C 中const關鍵字

一 const修飾指標變數 int num 0 1.const在 前面,表示const修飾指標指向的內容 const int p intconst p 2.const在 後面,表示const修飾指標變數 int const p 二 const修飾成員函式首先來看一下普通成員函式 class a fu...