引用 && 指针

引用指针的区别:

  • 引用必须初始化
  • 引用不能为空
  • 引用不能再赋值. 例如: int a = 1; int b = 2; int &c = a; c = b; 引用c依然指向变量a, 但变量a的值变为2

引用种类:

  • 左值引用: int a = 0; int &b = a;
  • 右值引用: 绑定到一个临时对象上.
  #include <iostream>
  #include <type_traits>

  int main() {
      int &&i = {1};
      std::cout << std::is_lvalue_reference<decltype(i)>::value << std::endl; // 输出:  0
      std::cout << std::is_rvalue_reference<decltype(i)>::value << std::endl; // 输出:  1
  }

使用右值引用的好处: 实现转移语义, 避免对象拷贝, 提高效率.

  • 引用折叠: 避免繁琐的语法
  • X& &X& &&X&& & 可折叠成 X&
  • X&& && 可折叠成 X&&

引用的效率: 引用指针在汇编层面上一样的, 性能没有差距. 如果觉得有帮助,可以扫描右边的微信打赏码支持一下.

Leave a Reply

Your email address will not be published. Required fields are marked *