首页 > 后端开发 > C++ > 临时 C 弦的寿命有多长?

临时 C 弦的寿命有多长?

Barbara Streisand
发布: 2024-12-10 18:30:11
原创
831 人浏览过

How Long Do Temporary C   Strings Live?

临时对象的生命周期:揭开复杂性

所讨论的代码片段涉及从 foo() 函数返回一个临时 std::string 对象,然后调用 bar( ) 与临时的 c_str() 指针。这种担忧源于这样的假设:临时变量在 bar() 执行之前被销毁。

但是,这个假设是不正确的。根据C语言标准,临时对象一直存在,直到它所参与的完整表达式完成为止。这个概念在下面的代码结构中得到了说明:

____________________     range of full expression
bar( foo().c_str() );
     ^^^^^               ^
       |               |
     birth           funeral
登录后复制

在此示例中,foo() 返回的临时对象的生命周期从其在标记为“诞生”的点处的创建延伸到其在“葬礼”处的销毁。 ”。这种销毁发生在调用 bar() 之后,而不是最初想象的之前。

精确的规则指出,当词法上包含右值(右侧表达式)的完整表达式时,临时对象将被销毁负责创建它并完成评估。在给定的代码中,这个完整表达式是函数调用本身,bar( foo().c_str() )。因此,临时对象将继续存在,直到此调用完成,确保 bar() 可以访问其 c_str() 指针。

以上是临时 C 弦的寿命有多长?的详细内容。更多信息请关注PHP中文网其他相关文章!

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