ple*_* me 9 c++ const reference noncopyable
假设我有:
A GenerateA();这是否意味着它应该有效:B(GenerateA())?
即,const ref是否意味着没有生成A()返回的A副本完成?这是否意味着只要B存在,返回的临时范围就会延长?
编辑:注释中的插件问题:如果左值为常数A&?,是否可以将A&从GenerateA()返回到本地A.
谢谢!
正如其他人已经指出的那样,如果不可复制A GenerateA(),则无法编译A。
关于 const ref :不,临时的生命周期不会延长到 B 的生命周期。标准 [12.2.5] 规定:
构造函数构造函数初始化程序 (12.6.2) 中引用成员的临时绑定将持续存在,直到构造函数退出。[...] 函数返回语句 (6.6.3) 中返回值的临时绑定一直持续到函数退出为止。
所以,是的,在某些情况下存在临时生命周期的延长(有时确实有用:请参阅这篇文章),但在您介绍的情况下则不然。
关于你的最后一个问题,返回对局部变量的引用是不合法的GenerateA()(并且将结果绑定到 const 引用不会有任何帮助)。
| 归档时间: |
|
| 查看次数: |
1589 次 |
| 最近记录: |