1. 程式人生 > >C++中關鍵字const的用法

C++中關鍵字const的用法

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 ,那麼編譯器就會報錯。