天天看点

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(),y(){}

    void dis() const    //const对象调用时,优先调用
    {
        cout<<"x="<<x<<endl;
        cout<<"y="<<y<<endl;
        //y = 521;     const修饰函数表示承诺不对数据成员修改
        //input();     const修饰函数不能调用非const函数
    }

    void dis()          //构成函数重载,非const到对象时,优先调用
    {
        y = ;   
        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数据成员,但不能修改。