C++学习笔记C++

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

2016-04-26  本文已影响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.

上一篇下一篇

猜你喜欢

热点阅读