一、常類型的引入
是為了既保證資料共用又防止資料被改動。
二、常資料成員
定義格式:
const 資料類型 資料成員名;
說明:
1. 常資料成員只能通過建構函式用初始化列表進行初始化,而任何其他函數都不能對該成員賦值;
三、常成員函數
說明格式:
類型說明符 函數名(參數表)const;
說明:
1. 在函數實現的部分要帶關鍵字const(因為const是函數類型的一個組成部分);
2. 關鍵字const可以被用於參與對重載函數的區分;
3. 常成員函數不能更新對象的資料成員,也不能調用該類中的普通成員函數,這就保證了在常成員函數中絕對不會更新資料成員的
值;
4. 常成員函數是常對象惟一的對外介面,這是C++從文法機制上對常對象的保護。
四、常對象
說明形式:
類名 const 對象名[(參數表)]; 或 const 類名 對象名[(參數表)];
說明:
1. 在定義對象時,必須進行初始化,而且不能被更新;
2. 常對象只能調用它的常成員函數,而不能調用普通的成員函數;
3. c++不允許直接或間接地更改常對象的資料成員。
五、程式樣本
#include <iostream><br />using namespace std; </p><p>class KSample<br />{<br />private:<br />const int n; //定義常資料成員<br />public:<br />int m;<br />KSample(int i, int j):n(j) //常資料成員只能用初始化列表進行初始化<br />{<br />m = i;<br />}<br />void Display(void); //聲明普通成員函數Display(void)<br />void Display(void) const; //聲明常成員函數Display(void)<br />};</p><p>void KSample::Display()<br />{<br />cout<<"m1 = "<<m<<endl;<br />cout<<"n1 = "<<n<<endl;<br />}</p><p>void KSample::Display() const<br />{<br />cout<<"m2 = "<<m<<endl;<br />cout<<"n2 = "<<n<<endl;<br />}</p><p>int main()<br />{<br />KSample a(30,40);<br />a.Display();<br />const KSample b(10,20); //定義常對象<br />b.Display();<br />return 0;<br />}
程式結果:
m1 = 30
n1 = 40
m2 = 10
n2 = 20