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

本文详细解释了C++中const类型参数的对象引用、const成员函数的使用及意义,强调了const关键字在避免误写和优化编译器方面的价值。通过实例展示了如何正确标记成员函数为const,以及其在确保代码安全性与效率上的作用。

const类型参数的对象引用

在如下的类声明中:

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值