代码之家  ›  专栏  ›  技术社区  ›  Clark Gaebel

r值参考和l值参考之间有什么区别(代码生成)

  •  3
  • Clark Gaebel  · 技术社区  · 16 年前

    例如,这个构造是什么样子的?让我们假设现在没有复制省略。

    vector<SomethingHUUGE> myFunc();
    void foo(vector<SomethingHUUGE>&&);
    
    int main() { foo(myFunc()); return 0; }
    
    3 回复  |  直到 16 年前
        1
  •  5
  •   Billy ONeal IS4    16 年前

        2
  •  2
  •   Stack Overflow is garbage    16 年前

    可以 两者都可以用指针表示,但通常它们只是高级别名,因此它们根本没有低级表示。不会生成额外的代码,引用只是被它引用的对象替换。

    在代码生成之前无法完全消除引用的情况下,rvalue和lvalue引用通常都像指针一样表示为内存地址。

        3
  •  0
  •   Klaim    16 年前

    表达式中的rvalue没有名称。

    大多数时候它只是一个临时的物体。 如果在表达式后面没有任何方法使用它,那么它就是一个r值。