c++2.0学习---右值引用/优化

右值引用

概念

  • 左值

    可以出现在operator = 左边的

  • 右值

    只能出现在operator = 右边的

  • 右值不可取地址


常用的标准库函数

  • std::move()

    该函数只有让左值绑定到右值引用的函数上的作用,除此之外,没有任何额外的功能

    使用该函数并没有任何其他作用,本身不产生优化

  • std::forward()

    该函数目的是实现完美转交--即左值传递后仍然为左值,右值传递后仍然为右值

    原因参照左值引用和右值引用均为左值, (也可以说是有名字的变量都为左值)


常见右值情况

  • a + b

  • 临时对象

  • 左值通过std::move()函数绑定为右值


使用场景

  • 需要对右值单独进行优化,一般是使用浅拷贝

    需要在右值引用的重载函数中单独实现

    • 实现时需要注意传递后需要改变原变量的指向,否则右值传递后会立即销毁

      如果还指向原变量内容,则原变量的内容就会被销毁,导致后续操作产生未定义行为

你可能感兴趣的:(c++2.0学习,c++,开发语言)