const 與函式的關係

2021-06-23 07:43:47 字數 670 閱讀 3011

我們知道,如果要定義乙個唯讀的變數,可以這樣做const int a =5;那麼a也就一直等於5

今天遇到const和函式之間的問題,不太熟悉,因此了解了一下

第一種情況:int  a(const int &b,const int &c),在這個函式裡面,傳入的兩個引用(或者說是指標)的值都不能夠改變,對於非指標或者引用那就無任何意義了,因為他本來就是個區域性變數,很快就釋放了,因此,這種情況下,不會改變傳去的引數的值,唯讀

第二種情況: int a() const; 在函式名後面加上const關鍵字,這個const 在這種情況下,對於成員函式才有意義,意思是不改變成員的值,叫常量函式  比如說是這樣子

class a

int a;

int b;

int  c() const;

int d() const;

int e();

這樣子的話,常量成員函式,就不能訪問非常量成員函式(就是那些普通函式),因為那些函式很有可能會改變成員的值,那麼const的初衷就達不到了

第三種情況:const int *a(){};const 在函式前面,便是傳回的指標或引用不能被修改,用於描述返回值的,傳回的值不被修改,

如 const  char* a();  那麼 不能這樣用 char  *p = a();  要這樣用  const char*p = a();

const與函式過載的關係

本文 const到底是不是乙個過載的參考物件,請看下面的例子 class a 函式1 void f int i const 函式2 這個地方的過載是沒有問題的,說明const 修飾函式能夠區分過載 class b 這次編譯器會報出 b f redefinition 的錯誤,說明const作為修飾返回...

const與引用的關係

1.使用 int i 6 const int a i i 9 在此時,a與i是同乙個變數,名稱不同 改變i的值,而不是用a改變 輸出 a 9,i 9 如果使用a改變值則編譯錯誤 2.當引用物件型別不同時 double i 6.79 const int a i i 9.67 輸出 a 6,i 9.67...

const 位置與指標的關係

int b 500 const int a b 1 int const a b 2 int const a b 3 const int const a b 4 typedef char pchar pointer to char typedef const pchar cpchar const po...