浅析const标识符在C++函数的功能

范例:

class matrix

{

public

     matrix(){};

      const double getvalue(const unsigned row, const unsigned column) const; 

private:

      balabalabala;

}

 

上述范例声明了一个martrix类,该类包含一个getvalue接口,内含3个const标识符,这也是const在C++函数中最常出现的三个位置。

我们可以通过

matrix a;

double b=a.getvalue(x,y)的形式在主函数中调用此类接口。含义为:获取矩阵a在(x,y)位置的值,并将该值赋给b.

(1)第一个const:表示接口返回值b是不可被修改的,任何想要修改b值的行为都是非法的。

(2)第二个const:表示传入的实参在函数体是不可被修改的,例如我们不能在函数体使用x++,x--这些意图修改传入值的行为,这也是非法的。

(3)第三个const:表示调用该成员函数的类对象a是不可被修改的。

那什么时候用const呢? 能加const限定的时候,就最好加上,原因有二:

(1)非const的实参能够传入到形参是const的函数中,但是const实参是无法传入到形参不是const的函数内的,因为这种非法的行为会造成const实参在函数体可以修改的冲突,编译器编译时会报错。

(2)防止不能被随意修改的量,在程序执行的过程中,被无意间修改掉,可能连我们自己都没有意识到。

 

posted @ 2016-02-11 00:04  雨落无声2002  阅读(436)  评论(0编辑  收藏  举报