在使用C++語言開發中,如果我們希望某一個對象在定義之后不被錯誤的修改,我們可以將這個對象聲明為const對象,這樣這個對象的數據成員就不可以被更改。
1.定義const對象
const類名 對象名;
類名const對象名;
1)定義類對象時可以將其指定為const對象。定義后const對象不能再被修改;
2)const對象不能調用非const類型的成員函數。
在非const成員函數內部,有可能會對對象的數據成員進行修改,比如setHour()修改了對象的Hour值。而const類型的成員函數是不會修改對象的數據成員的。
const數據成員
1.const數據成員
在類內部使用const關鍵字來聲明const數據成員。const數據成員的值不能被修改。
const int m_nNum;//定義了一個const數據成員
初始化時比較特殊,只能通過初始化列表初始化。不能在構造函數里賦值。
2.初始化列表
構造函數初始化列表以一個冒號開始,接著是以逗號分隔的數據成員列表,每個數據成員后面跟一個放在括號中的初始化式。
初始化列表可以為數據成員初始化,不僅僅只是const數據成員。
我們在構造函數外面添加了初始化列表,這個列表里面為const成員m_nNum賦了初始值10,如果我們有多個構造函數,必須在每一個構造函數外面都對這個const成員添加初始化列表初始化,包括復制構造函數。
const成員函數
1.const成員函數只能被const對象引用;
2.const成員函數內可以引用const數據成員,也可以引用非const數據成員,但不能修改非const數據成員的值,也不能調用非const成員函數;
3.const成員函數在聲明和定義的時候都必須加上const。