const關鍵字的深入理解

2021-08-26 05:03:31 字數 1487 閱讀 1986

const作為c++語言的關鍵字,我們的設計原則是,盡量多使用const變數:

那麼為什麼是這樣呢,c++語言引入指標的不足之處就是記憶體的管理變複雜,容易出現引用出錯,所以我們有時需要對不能夠更改的位址空間進行保護即只能讀,不能寫,這個保護的方式就是定義為const,由const修飾的記憶體空間不能夠寫。

通過const的使用可以保護容易受破壞的記憶體,提高程式的穩健性,使得違規寫錯誤在編譯時期就暴露出來,從而及時修改。

const的用法:修飾變數,修飾指標和引用,修飾成員函式三種,我們分別討論:

1.修飾常量是最簡單的,

最基本的用法:

const int a=100; b的內容不變,b只能是100也就是宣告乙個int型別的常量(#define b =100)

int const b=100; //和上面作用一樣

const指標和引用一般用在函式的引數中

int* m = &a; //出錯,常量只能用常指標

int c= 1;const int*pc = &c;//常指標可指向常量

2.修飾指標和引用,const在*號左側指指標的值不能改變,const在*號右側指指標指向的數值不能改變;

const int* pa = &a; //指標指向的內容為常量(就是b的值不變)

int const *a = &b; //指標指向的內容為常量(就是b的值不變)*p=3//error

int* const a = &b; //指標為常量,不能更改指標了如 a++但可以改值*p=3;

從這可以看出const放在*左側修飾的是指標的內容,const放在*右側修飾的是指標

本身.const引用的用法和指標一樣

int const & a=b; 和指標一樣

const int& a=b; 和指標一樣

但沒有 int& const a=b 的用法因為引用不能做移位運算,但只是出個warning

3.const對於成員函式:如

const char* why()const;

const char* 這裡的const表示返回內容不可更改,如:

x.why() = "hello"; //錯誤

why()const表示該函式不修改資料成員的值,如:

class x

; // 錯誤!!

}; const char* why()const;

const char* 這裡的const表示返回內容不可更改,如:

x.why() = "hello"; //錯誤

why()const表示該函式不修改資料成員的值,如:

class x

; // 錯誤!!

}; const char* why()const;

const char* 這裡的const表示返回內容不可更改,如:

x.why() = "hello"; //錯誤

why()const表示該函式不修改資料成員的值,如:

class x

; // 錯誤!!

};

深入理解Java Volatile關鍵字

1.volatile關鍵字的作用是什麼?a.當乙個變數被定義為volatile之後,它將具備兩種特性 一 保證此變數對所有執行緒的可見性 可見性的意思為 當某個執行緒對volatile變數的值進行了修改,其他的執行緒是可以立即得知的 而普通的變數是無法做到這一點的,執行緒先是對工作記憶體當中的普通變...

深入理解關鍵字 const static

對於const關鍵字,我們習慣性的將它直接看作常量,但當你編譯下面 時,會發現與我們之前的理解有所偏差 const int size int arr size c 不能通過 cpp 順利執行 在定義陣列時,必須指定陣列元素個數為常量,但在c中卻不能通過,以此可以推翻const修飾的值是常量。參考 c...

深入理解volatile關鍵字

併發的三大性質 併發分析的切入點分為兩個核心,三大性質 public class volatiledemo thread.start try catch interruptedexception e isover true volatile修飾的共享變數進行寫操作時,會多出lock字首的指令,實現快...