1.對於普通的const與基本型別組合,都是表示的是這是乙個常量,
const int a;
int const a;
表示的意思是一樣的,a是乙個常量,不可改變
2.對於const與指標組合在一起,可以將const理解為內容,*理解為指標,誰在前面誰不能改變,誰在前面先讀誰
const int *a; 等價於int const *a; const在前面所以內容不可以改變,但是指標指向可以改變。也就是常量指標
如:int const *a=b; 這樣就不能再出現*a=x等其他值了,因為內容不可變,但是可以通過a=&x;這樣來進行改變指標的指向
int *const a; 表示的是指標指向不可改變,但是指標所存放的內容可以改變,也即是指標常量
如:int *const a=b; 這樣再出現 a=&x,這樣重定義指標指向的語句就不合法,只能通過*a=x這樣來進行內容的改變。
const int &ri=i;定義的是引用是另一變數的別名,它本身就是乙個常量,也就是說不能再讓乙個引用成為另乙個變數的別名。 我們不能通過ri去改變它所代表的記憶體區域
3.const修飾函式傳入引數
將函式傳引數修飾為const,以指明使用這種引數僅僅是為了效率的原因,而不是想讓呼叫函式能夠修改物件的值,同理,將指標宣告成const,函式將不修改由這個引數所指向的物件。 如:void fun(const int *a); void fun(const int &a)
4.修飾函式返回值
可以阻止使用者修改返回值,返回值當然也要相應的賦給常量或者常指標。
例如:有時候需要返回的是指標或者引用,我們可以通過指標修改所指的物件,但是有時候不希望改變這個內容,這個時候就需要返回乙個常量。
5.const修飾成員函式(c++特性)
const物件只能訪問const成員函式,而非const物件可以訪問任意成員函式,包括const成員函式
const物件的成員是不能被修改的,而通過指標維護的物件確實是可以修改的
const成員函式不可以修改物件的資料,不管物件是否具有const性質。編譯時以是否修改成員函式為依據進行檢查。
解釋:const成員函式:函式名稱後面加上const。
當乙個類中存在同名,同參的常量和非常量成員函式時,呼叫的時候,常量物件呼叫常量成員函式,非常量物件呼叫非常量成員函式。
const 指標與指向const的指標
當使用帶有const的指標時其實有兩種意思。一種指的是你不能修改指標本身的內容,另一種指的是你不能修改指標指向的內容。聽起來有點混淆一會放個例子上來就明白了。先說指向const的指標,它的意思是指標指向的內容是不能被修改的。它有兩種寫法。const int p 推薦 int const p 第一種可...
const 指標與指向const的指標
當使用帶有const的指標時其實有兩種意思。一種指的是你不能修改指標本身的內容,另一種指的是你不能修改指標指向的內容。聽起來有點混淆一會放個例子上來就明白了。先說指向const的指標,它的意思是指標指向的內容是不能被修改的。它有兩種寫法。const int p 推薦 int const p 第一種可...
const 指標與指向const的指標
當使用帶有const的指標時其實有兩種意思。一種指的是你不能修改指標本身的內容,另一種指的是你不能修改指標指向的內容。聽起來有點混淆一會放個例子上來就明白了。先說指向const的指標,它的意思是指標指向的內容是不能被修改的。它有兩種寫法。const int p 推薦 int const p 第一種可...