美文网首页C++学习笔记C++
C++用const修饰函数情形解析

C++用const修饰函数情形解析

作者: 这是朕的江山 | 来源:发表于2016-04-26 21:23 被阅读191次

    1.如果给以“指针传递”方式的函数返回值加const修饰,那么函数返回值(即指针)的内容不能被修改,该返回值只能被赋给加const修饰的同类型指针。

    例如函数const char * GetString(void);

    如下语句将出现编译错误:

    char*str = GetString();

    正确的用法是const char *str =GetString();

    2.任何不会修改数据成员的函数都应该声明为const类型。如果在编写const成员函数时,不慎修改了数据成员,或者调用了其它非const成员函数,编译器将指出错误,这无疑会提高程序的健壮性。

    a.const对象只能访问const成员函数,而非const对象可以访问任意的成员函数,包括const成员函数.

    b.const对象的成员是不可修改的,然而const对象通过指针维护的对象却是可以修改的.

    c.const成员函数不可以修改对象的数据,不管对象是否具有const性质.它在编译时,以是否修改成员数据为依据,进行检查.

    d.然而加上mutable修饰符的数据成员,对于任何情况下通过任何手段都可修改,自然此时的const成员函数是可以修改它的

    例如下面的程序

    class A()

    {

    public:

        int B(void);

        int C(void) const;

    private:

          int a;

          mutable int b;

    }

    int A::C(void)const

    {

         B();//报错

         a++;//报错

         b++;//正确,不报错

          return a;

    }

    That's all.

    相关文章

      网友评论

        本文标题:C++用const修饰函数情形解析

        本文链接:https://www.haomeiwen.com/subject/myxcrttx.html