在C++中对值传递的形参加 const 修饰符无意义吗?
由于在 C++ 中,const
是一个经常被用到的修饰符和关键字,有时候人们会想也不想就对其进行了滥用。刚才我看这样一条语句:
void do_work (const int x);
既然x
是传值的形参,所以对其的修改本来就不会影响原来的值,那么为什么还要加上const
呢?
其实,加了const
的主要后果是:无法修改被复制后的x
的值。比如,本来你可以这样:
void do_work (const int x) {
x = 5;
}
虽然这条语句并不会影响调用方传递的实参,但是在函数内部,这个x
是可以当一个临时变量来处理的。
如果加了const
,这条语句将产生编译错误:
表达式必须是可修改的左值。
由上可见,在这个地方,是否添加 const
并非没有意义,但是在多数情况下意义不大。加上这个 const
对健壮性的贡献并不大,但是大部分情况下,直接使用形参作为函数的内部变量也并不合适。或许,这也是设计者为 C++ 标准提供这个语法的目的之一吧。
题外话:我帮你整理了包括 AI 写作、绘画、视频(自媒体制作)零门槛 AI 课程 + 国内可直接顺畅使用的软件。想让自己快速用上 AI 工具来降本增效,辅助工作和生活?限时报名。
© 转载需附带本文链接,依据 CC BY-NC-SA 4.0 发布。