C++中關鍵字const的用法
阿新 • • 發佈:2018-11-10
C++中關鍵字const的用法
const 是C++的一個關鍵字,現在對它的用法做一個小結。
1. 定義常量
在C中,如果要頻繁的使用某一個常量,可以利用巨集定義來利用一個符號定義這個常量,以後用到這個常量的地方就用這個符號代替即可,這樣修改這個常量的值也方便了很多。在C++中,我們可以利用 const 替代巨集定義,具體程式碼如下:
#define M 15
const int N = 15;
巨集定義是一種不做任何語法性檢查的替換,而 const
2. 函式引數包含const
首先要明確,在C++中,引數傳遞可以傳值,也可以傳引用。過去C中可以傳指標,而傳引用底層就是傳指標的效果。所以,當引數所佔記憶體較大時,傳引用相較傳值而言,就高效了很多。所以,C++中,推薦使用傳引用操作。而在傳引用時,如果不希望函式改變傳入的實參,就可以新增關鍵字 const 。示例程式碼:
class complex{
public:
...
complex& operator += (const complex&);
...
private:
double re, im;
};
3. 函式返回值包含const
同函式引數一樣,在C++中,函式返回值傳遞可以傳值,也可以傳引用。類似,C++中,推薦使用傳引用操作。而在傳引用時,如果不希望函式返回值被改變,就可以新增關鍵字 const 。示例程式碼:
const int& add(int, int&);
4. 常量成員函式
在類中,如果一個函式不會改變類的資料,那麼可以把這個函式宣告成常量成員函式。示例程式碼:
class complex{
public:
...
double real() const { return re; }
double imag() const { return im; }
.. .
private:
double re, im;
};
const 表示該函式不會改變類中的資料。為什麼最好要加 const 呢?
const complex c1(2, 1);
cout << c1.real();
cout << c1.imag();
原因是假如我們在程式中這樣定義了一個物件並且呼叫這兩個函式,而這假設類中兩個函式沒有加 const ,那麼編譯器就會報錯。