C++——const加深理解之const在函数后

来源:互联网 发布:从零开始学英语 知乎 编辑:程序博客网 时间:2024/06/05 07:38

先看下面4种情况,应该是理解const的基础,我觉得必须掌握且容易掌握

  int   b   =   500;     const   int*   a   =   &b;              [1]     int   const   *a   =   &b;              [2]     int*   const   a   =   &b;              [3]     const   int*   const   a   =   &b;      [4]    

如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于星号的 右侧,const就是修饰指针本身,即指针本身是常量。因此,[1]和[2]的情况相同,都是指针所指向的内容为常量,这种情况下不允许对内容进行更改操 作,如不能*a = 3 ;[3]为指针本身是常量,而指针所指向的内容不是常量,这种情况下不能对指针本身进行更改操作,如a++是错误的;[4]为指针本身和指向的内容均为常 量。

那如果const是跟在函数后面呢,来看一下下面这段程序

double Volume() const{    return m_Length*m_Width*m_Height;}bool Compare(const CBox &xBox) const{    return this->Volume() > xBox.Volume();}

const跟在Compare(const CBox &xBox)后面这么做是为了防止你在函数中对不应该在这里改变的量(也就是Volume)不小心进行了改变。这样的函数叫常成员函数。常成员函数可以理解为是一个“只读”函数,它既不能更改数据成员的值,也不能调用那些能引起数据成员值变化的成员函数,只能调用const成员函数,所以这里的Volume()函数 也必须是常成员函数。

0 0