我有以下功能:
T foo();
并且,在另一个函数中,我正在使用返回的 T
值,例如:
const T& t = foo();
或
T&& t = foo();
我想问:
两者是否等价?
在内存方面,这两种方法有什么区别?
我知道在第一种方法中,临时值生命周期与引用生命周期匹配。使用右值引用时也会出现同样的情况吗?
我是否应该考虑使用 const 右值引用 (
const T&&
)?
我使用的是第一种方法,这是我习惯使用的方法,并且效果很好。我仍然在思考右值引用和 C++11 产品。
最佳答案
不是,它们有不同的类型。
实现定义,但不太可能有任何区别。
生命周期延长对右值和左值引用的作用相同。但规则比“临时值生命周期匹配引用生命周期”更复杂。
可能不会。我当然不会去寻找使用它的地方。如果你对它有用途,那么最好是这样一个重大的改进,以证明使用这种不寻常的组合以及人们将来阅读它时会随之而来的困惑是合理的。
关于c++ - const T& 与 T&&,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14793486/