首页 > 后端开发 > C++ > 为什么我不能将临时对象传递给 C 中的非常量引用?

为什么我不能将临时对象传递给 C 中的非常量引用?

Susan Sarandon
发布: 2024-12-11 15:02:11
原创
825 人浏览过

Why Can't I Pass Temporary Objects to Non-Const References in C  ?

为什么 C 中的临时对象只允许使用 const 引用?

在 C 中,临时对象的赋值只允许给 const 引用,同时禁止非常量引用。这种限制引发了许多问题,特别是关于修改临时对象的可能性的问题。

众所周知,临时对象是短暂的,一旦包含其创建的语句结束,它们就会消失。这引起了一个合理的担忧:为什么在允许读取的同时限制修改?

要理解这种差异,请考虑涉及函数参数的假设情况:

void inc(double& x)
{ x += 0.1; }

int i = 0;
inc(i);
登录后复制

如果非常量引用允许临时参数,该代码的行为将是特殊的。尽管通过引用传递 int 参数,但调用 inc 后 i 的值保持不变。这会导致意外和不合逻辑的结果。

但是,允许 const 引用可以保证传递给函数参数的临时对象不会被意外修改。这可以防止出现意外行为的可能性,并确保维护使用 const 引用的意图。

以上是为什么我不能将临时对象传递给 C 中的非常量引用?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板