1. 程式人生 > >c++中const修飾類及其成員小結

c++中const修飾類及其成員小結

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資料成員,但不能修改。