const类型参数的对象引用和const成员函数

来源:互联网 发布:整形医院网络咨询技巧 编辑:程序博客网 时间:2024/05/05 05:41

const类型参数的对象引用

在如下的类声明中:

class C{private:string name;public:C(){/*...*/}          //default constructorC(int x){/*...*/}     //convert constructorvoid setName(const string& n){name = n;}};
函数setName的string类型参数n标记为const,表明setName不会改变n,只是将n赋值给数据成员name。

通常,如果一个对象通过引用方式传到函数f中,而函数f又不会通过修改对象的数据成员的值改变对象的状态,那么,最好将f的参数标记为const,可以预防对参数的误写,同时有些编译器还可以对这种情况进行一些优化。


const成员函数
如果一个成员函数不需要直接或间接(通过调用其他的成员函数来改变其对象状态)地改变该函数所述对象的任何数据成员,那么最好将这个成员函数标记为const。

在如下的类声明中:

class C{private:string num;public:C(){/*...*/}          //default constructorC(int x){/*...*/}     //convert constructorvoid set(int n){num = n;}int get() const{return num;}};
由于get成员函数不需要改变类C的任何数据成员,因此我们将get成员函数标记为const。请注意,定义一个const成员函数时,const关键字出现在参数列表与其函数体之间。

由于get成员函数不更改任何数据成员,因此我们称这种类型的函数为只读函数。将成员函数标记为const可以预防对该函数所属对象的数据成员的误写,同时有些编译器还可以对这种情况进行一些优化。

一个const成员函数仅能调用其他const成员函数,因为const成员函数不允许直接或间接地改变对象的状态,而调用非const成员函数可能会间接地改变对象的状态。

0 0
原创粉丝点击