常數據成員
- 常數據成員必須使用初始化列表初始化來初始化,並且不能被更新
- 常數據成員必須初始化
PS:類的數據成員使用初始化列表進行的初始化 才叫初始化,使用構造函數內部的語句初始化叫賦值
常對象
- 常對象可以調用常成員函數,不能調用非const成員函數;非const對象,可以調用普通成員函數和常成員函數
- 常對象成員函數不一定都是常成員函數,常對象的數據成員不一定都是數據成員
- 常對象一旦初始化,常對象的數據成員便不可允許修改
- 如果非要修改某個成員變量的話,
PS:定義常對象有兩種方法 1. const Point a 2.Point const a 兩者效果一樣
常成員函數
- 常成員函數不可更新對象的數據成員
- 常成員函數的const關鍵字可以被用於參與對重載函數的區分
- 通常非const成員需要定義一個const版本的重載函數,以便定義常對象時可以調用常成員函數(原因是常對象只能調用const成員函數)
如果常對象調用的常成員函數返回的是指向當前對象的指針(或返回的是當前對象),那麼此常成員函數的聲明的返回類型要加const,例如:
const Complex* fun();
const Complex* fun() const;
這兩個函數可以構成函數的重載
注意,如果是這樣
const Complex* fun();
Complex *fun();
這樣就構成不了重載,因爲函數的重載以參數個數 參數的類型 參數的順序爲標誌,而返回值類型不能作爲函數重載的標誌