勤奋菜鸟的天堂

导航

const关键字

(1)const与指针---星号(*)在const之前表示指针常量,星号在const之后表示表示指向常量的指针;

(2)const限定函数的参数---表示该参数在函数体内不可改变

void Fun(const int Var);
分析:上述写法限定参数在函数体中不可被改变。由值传递的特点可知,Var在
函数体中的改变不会影响到函数外部。所以,此限定与函数的使用者无关,仅与
函数的编写者有关。
结论:最好在函数的内部进行限定,对外部调用者屏蔽,以免引起困惑。如可改
写如下:
void Fun(int Var)
{
const int & VarAlias = Var;
VarAlias ....
.....
}

(3)const在函数前,限定函数的值型返回值

const int Fun1();
const MyClass Fun2();
分析:上述写法限定函数的返回值不可被更新,当函数返回内部的类型时(如
Fun1),已经是一个数值,当然不可被赋值更新,所以,此时const无意义, 最
好去掉,以免困惑。当函数返回自定义的类型时(如Fun2),这个类型仍然包
含可以被赋值的变量成员,所以,此时有意义。

(4)const在函数后面,限定类的成员函数,不会修改类中数据成员的值;

class ClassName {
public:
int Fun() const;
.....
}
注意:采用此种const 后置的形式是一种规定,亦为了不引起混淆。在此函数
的声明中和定义中均要使用const,因为const已经成为类型信息的一部分。
获得能力:可以操作常量对象。
失去能力:不能修改类的数据成员,不能在函数中调用其他不是const的函数。

posted on 2012-04-23 13:34  勤奋的菜鸟  阅读(232)  评论(0编辑  收藏  举报