比較常見的const與指標的組合情況

2022-08-05 07:27:19 字數 1149 閱讀 8059

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 第一種可...