c 《const關鍵字的用法》

2021-08-17 21:22:20 字數 2064 閱讀 8225

一直以來都沒有總結const修飾符的用法,總是感覺const的用法太多,要記住的情況太多,不能夠掌握所有的情況,所以總是不了了之。但是如果沒有徹底掌握const用法的話,心裡總是感覺知識還欠缺很多,還要很多知識點沒有掌握。如果自己真正的總結完之後,其實也只有這麼多用法。

修飾資料變數,保證資料變數只能在定義的時候進行初始化,並且在程式的執行過程中不能被再次賦值。

1、修飾類中的資料成員變數,可以直接在宣告的時候進行初始化(const int num = 100;),不過最好還是在建構函式的初始化列表中進行初始化(必須用初始化列表進行初始化)。

[cpp]view plain

copy

classa  

private:  

constintnum;//const成員變數

};  

2、也可以在程式中定義const變數。const int num = 100;//比如在定義全域性const變數num=100;

3、const int num = 100;等價於int const num = 100;

也就是說const int 和int const意思相同。

1、const修飾成員函式的返回型別

[cpp]view plain

copy

classa  

constvoidfun(intval)  

private:  

constintnum;//const成員變數

intage;  

};  

此時const的位置有下面兩種等價的情況:

const voidfun ();

void constfun ();

2、const修飾成員函式的形參變數

此時const的位置有下面兩種等價的情況:

void fun(const int val);

void fun(int const val);

3、const直接修飾成員函式

const放在函式宣告之後,函式實現之前。void fun(int val)const;

const此時保證不會修改該物件的資料成員。

下面的例子是錯誤的,因為fun是const成員函式,它不能修改物件的成員變數age;

[cpp]view plain

copy

voidfun(intval)const

(1):const成員函式此時能訪問const和非const資料成員。但不能修改非const資料成員。

(2):const成員函式中只能呼叫其它const的成員函式。

(3):void fun(int val)const;和void fun(int val);兩個函式構成過載函式。

const物件只能呼叫const成員函式。

非const物件會優先呼叫非const成員函式,但是如果fun函式只有const函式,那麼非const物件也會呼叫const成員函式。(但是該非const成員函式中不能修改物件成員變數)

定義乙個const物件a:const a a(100);

const修飾函式,是從函式的層面,不修改資料。

const修飾類物件,是從物件的層面,不修改資料,只能呼叫const成員函式。

const物件只能呼叫const成員函式。

非const物件會優先呼叫非const成員函式,但是如果fun函式只有const函式,那麼非const物件也會呼叫const成員函式。(但是該非const成員函式中不能修改物件成員變數)

C const關鍵字用法

const關鍵字是c 新引進的關鍵字,目標是用於定義常量,避免c語言中使用巨集定義出現的邊際問題,並且const是型別安全的,即const定義的是不可修改值的變數,它是有型別的,但是巨集替換只是簡單的進行字串的替換,容易出現邊際問題,造成錯誤。但是const的用法並不僅僅在此,因此整理一下,加深理解...

C const關鍵字用法

const關鍵字是c 新引進的關鍵字,目標是用於定義常量,避免c語言中使用巨集定義出現的邊際問題,並且const是型別安全的,即const定義的是不可修改值的變數,它是有型別的,但是巨集替換只是簡單的進行字串的替換,容易出現邊際問題,造成錯誤。但是const的用法並不僅僅在此,因此整理一下,加深理解...

C const關鍵字的例項用法

c 中的const更像編譯階段的 define const int m 10 int n m 變數程式設計客棧是要占用記憶體的,即使被const修飾也不例外。m,n兩個變數占用不同的記憶體,int n m 表示將m的值賦給n。c 中的const const變數禁止被修改 只是語法層面上的限制,通過指...