《C++代码整洁之道》-正确地使用const

正确地使用const

const 正确性对于实现更好、更安全的C++代码来说是一种很实用的方法。实用const可以省去很多麻烦且节省调试时间,因为违反const会直接导致编译时错误。还有,const的使用也可以支持编译器的一些优化算法,这意味着正确使用该限定符,也是一种提高程序执行性能的有效方法。
不幸的是,许多开发人员低估了使用const的好处,我的建议是这样的:NOTE:const的正确性。尽可能地使用const,并始终为变量或对象选择适当的声明以区分可变和不变。
通常,C++中的关键字const可以防止程序对该对象的变更。但该关键字有很多用法,const可能被用在不同的环境中表达不同的意思。
最简单的用法是将变量定义为常量:
const long double PI = 3.141592653589794;
另一个用途是防止传递给函数的参数被改变。 由于存在多种可变的情况,因此通常会导致混淆,下面是一些例子:

unsigned int determineWeightOfCar(Car const* car); //1
void lacquerCar(Car * const car); //2
unsigned int determineWeightOfCar(Car const* const car); //3
void printMessage(const std::string& message); //4
void printMessage(std::string const& message); //5

1.指针car指向Car类型的常量对象,即Car对象(“指针指向的对象”)不能被修改。
2.指针car是一个Car类型的指针常量,即你可以修改Car对象,但不能修改指针(例如,为其指定Car的新实例)。
3.在这种情况下,指针和指针指向的对象(Car对象)都无法被修改。
4.参数message通过const引用传递给函数,即不允许在函数内部更改被引用的字符串变量。
5.这只是const引用参数的另一种表示,它等同于第4行
提示

有一个简单的经验法则可以正确解读const限定符所修饰的对象。如果你在声明式中从右向左阅读,那么任何出现的const限定符都会修饰它左边的内容。例外情况:如何左侧没有任何内容,例如,在声明的开头使用了const,则const修饰的就是它右侧的内容。

const关键字的另一个用途是将类的(非静态)成员函数声明为const。

#include <string>
class Car{
public:
	std::string getRegistrationCode() const;
	void setRegistrationCode(const std::string& registrationCode);
	//...
private:
	std::string _registrationCode;
};

getRegistrationCode不能修改类Car的成员变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值