在使用C++語(yǔ)言開(kāi)發(fā)中,如果我們希望某一個(gè)對(duì)象在定義之后不被錯(cuò)誤的修改,我們可以將這個(gè)對(duì)象聲明為const對(duì)象,這樣這個(gè)對(duì)象的數(shù)據(jù)成員就不可以被更改。
1.定義const對(duì)象
const類(lèi)名 對(duì)象名;
類(lèi)名const對(duì)象名;
1)定義類(lèi)對(duì)象時(shí)可以將其指定為const對(duì)象。定義后const對(duì)象不能再被修改;
2)const對(duì)象不能調(diào)用非const類(lèi)型的成員函數(shù)。
在非const成員函數(shù)內(nèi)部,有可能會(huì)對(duì)對(duì)象的數(shù)據(jù)成員進(jìn)行修改,比如setHour()修改了對(duì)象的Hour值。而const類(lèi)型的成員函數(shù)是不會(huì)修改對(duì)象的數(shù)據(jù)成員的。
const數(shù)據(jù)成員
1.const數(shù)據(jù)成員
在類(lèi)內(nèi)部使用const關(guān)鍵字來(lái)聲明const數(shù)據(jù)成員。const數(shù)據(jù)成員的值不能被修改。
const int m_nNum;//定義了一個(gè)const數(shù)據(jù)成員
初始化時(shí)比較特殊,只能通過(guò)初始化列表初始化。不能在構(gòu)造函數(shù)里賦值。
2.初始化列表
構(gòu)造函數(shù)初始化列表以一個(gè)冒號(hào)開(kāi)始,接著是以逗號(hào)分隔的數(shù)據(jù)成員列表,每個(gè)數(shù)據(jù)成員后面跟一個(gè)放在括號(hào)中的初始化式。
初始化列表可以為數(shù)據(jù)成員初始化,不僅僅只是const數(shù)據(jù)成員。
我們?cè)跇?gòu)造函數(shù)外面添加了初始化列表,這個(gè)列表里面為const成員m_nNum賦了初始值10,如果我們有多個(gè)構(gòu)造函數(shù),必須在每一個(gè)構(gòu)造函數(shù)外面都對(duì)這個(gè)const成員添加初始化列表初始化,包括復(fù)制構(gòu)造函數(shù)。

const成員函數(shù)
1.const成員函數(shù)只能被const對(duì)象引用;
2.const成員函數(shù)內(nèi)可以引用const數(shù)據(jù)成員,也可以引用非const數(shù)據(jù)成員,但不能修改非const數(shù)據(jù)成員的值,也不能調(diào)用非const成員函數(shù);
3.const成員函數(shù)在聲明和定義的時(shí)候都必須加上const。