欢迎光临散文网 会员登陆 & 注册

Effective C++ 第三条 Use const whenever possible

2023-01-17 01:09 作者:九思519  | 我要投稿

在任何可能的情况下使用const

const修饰函数参数

当我们在传入参数时(引用传递、指针传递),我们需要考虑该函数是否对传入的对象进行修改,如果不修改,则使用const修饰。这么做带来的好处是如果在函数中误操作对对象进行了修改,编译器会报错提示,可以降低出错的概率。

比如以下这个例子

const修饰成员函数


那么函数1和函数2的区别如下

讲完了const的修饰的好处,const修饰也有坏处,比如在写类的成员函数的时候一个功能要写两遍,一遍 const 型,一遍 non-const 型。为了解决这个问题,我们采用转换来解决这个问题

可能看到这里会有些懵逼,但是我们一层一层拆解,//当我们通过non-const对象调用[]重载的时候,我们想复用const的代码,则我们先要把本non-const对象转换为const对象,这就是最里层 static_cast<const Exam&>,然后通过static_cast<const Exam&> 调用 [] 重载,得到的结果是 const char&,然后将const char& 通过 const_cast<char&> 转换为 char&,得到我们想要的结果。

const的辨析

//first const void* p; //second void* const p;

我们把 p 比作我们的手,而 *p 比作我们手指向的东西。

第一种是const修饰 *p,也就是说 p是不能改变的,而 p是可以改变的,也就是说 p 指向的内容不能变,但是 p 本身的指向可以变。我手指向哪里哪里就不能变,但是我的手可以动。

*第二种const修饰的是 p ,p 不能改变,但是 p 可以改变,我的手不能动,但是手指向的东西可以变。


Effective C++ 第三条 Use const whenever possible的评论 (共 条)

分享到微博请遵守国家法律