c++ - const T& 与 T&&

标签 c++ c++11 rvalue-reference

我有以下功能:

T foo();

并且,在另一个函数中,我正在使用返回的 T 值,例如:

const T& t = foo();

T&& t = foo();

我想问:

  1. 两者是否等价?

  2. 在内存方面,这两种方法有什么区别?

  3. 我知道在第一种方法中,临时值生命周期与引用生命周期匹配。使用右值引用时也会出现同样的情况吗?

  4. 我是否应该考虑使用 const 右值引用 (const T&&)?

我使用的是第一种方法,这是我习惯使用的方法,并且效果很好。我仍然在思考右值引用和 C++11 产品。

最佳答案

  1. 不是,它们有不同的类型。

  2. 实现定义,但不太可能有任何区别。

  3. 生命周期延长对右值和左值引用的作用相同。但规则比“临时值生命周期匹配引用生命周期”更复杂。

  4. 可能不会。我当然不会去寻找使用它的地方。如果你对它有用途,那么最好是这样一个重大的改进,以证明使用这种不寻常的组合以及人们将来阅读它时会随之而来的困惑是合理的。

关于c++ - const T& 与 T&&,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14793486/

相关文章:

c++ - 静态常量成员变量、可变参数模板和 && 的编译器错误或正确行为?

c++ - 使用 std::forward 的主要目的是什么以及它解决了哪些问题?

c++ - 嵌套 Ifs VS 2 个独立的 IFs - 性能方面?

c++ - std::tr1 中的 shared_ptr

c++ - 将第一个元素移动到 forward_list 的末尾

c++11 - std::condition_variable为什么需要std::mutex

c++ - 声明多维 std::array 的简洁方式

c++ - 以 std::istream&& 为参数是否合理?

c++ - 数组在*物理*内存中是连续的吗?

c++ - 如何获得编译警告