在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 工具来降本增效,辅助工作和生活?限时报名

当前页阅读量为: