gpt4 book ai didi

c++ - 为什么右值引用被认为比左值引用更安全?

转载 作者:行者123 更新时间:2023-11-28 05:05:16 29 4
gpt4 key购买 nike

在 C++11 之前,只有 const 左值引用可以绑定(bind)到右值,因为右值引用不存在并且非 const 左值引用不能绑定(bind)到右值。 afaik,非 const 左值引用不能绑定(bind)到右值的原因是它很危险。然后他们制作了右值引用,这使得移动数据成为可能......但是为什么右值引用绑定(bind)到右值被认为比非常量左值引用绑定(bind)到右值更安全?

最佳答案

右值引用相对于左值引用的优势在于,通过右值引用,您知道所引用的对象是一个右值。因此,您知道您可以在不损坏其他数据的情况下操纵它。

如果允许非 const 左值引用引用右值,您将永远不知道所引用的对象是否是临时对象。例如,考虑这两个构造函数

class A {
public:
A(A& src) // Copy constructor
{
// Create a copy of src, but be sure to leave src intact
}

A(A&& src) // Move constructor
{
// Create a copy of src. If necessary, you can steal some
// of src's resources (dynamic memory, open files). It
// won't miss it
}
};

即使允许左值引用引用右值,您在第二个版本中获得的性能优势也无法在第一个版本中实现。

关于c++ - 为什么右值引用被认为比左值引用更安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44977753/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com