c++中const修飾類及其成員小結
阿新 • • 發佈:2019-01-28
1、const修飾類的成員變數。
const修飾類的成員變數,表示成員常量,不能被修改,同時它只能在初始化引數列表中賦值(C11支援類中初始化)。
可被const和非const成員函式呼叫,而不可以修改。
class A
{
public:
A():iValue(521){}
private:
const int iValue;
}
2、const修飾類的成員函式。
1、const修飾函式的意義:承諾在本函式內部不會修改類內的資料成員,不會呼叫其他的非const成員函式。其從函式層面上不修改資料。 2、const修飾函式的位置:const關鍵字放在宣告之後,實現體之前。
class A
{
public:
A():x(521),y(125){}
void dis() const //const物件呼叫時,優先呼叫
{
cout<<"x="<<x<<endl;
cout<<"y="<<y<<endl;
//y = 521; const修飾函式表示承諾不對資料成員修改
//input(); const修飾函式不能呼叫非const函式
}
void dis() //構成函式過載,非const到物件時,優先呼叫
{
y = 521;
input();
cout<<"x="<<x<<endl;
cout<<"y="<<y<<endl;
}
void input()
{
cin>>y;
}
private:
const int x;
int y;
}
3、const修飾類的物件。
const修飾類物件表示常物件,其在物件層面上承諾不修改資料。
const A a;
a.dis();
總結:
1、如果const構成了函式過載,const物件只能呼叫const函式,非const物件優先呼叫非const函式。
2、const函式只能呼叫const函式。非const函式可以呼叫const函式。
3、類體外定義的const成員函式,在定義和宣告處都需要const修飾符。
4、const物件只能呼叫const函式,但可以訪問非const和const資料成員,但不能修改。