C++笔记 - 引用 && 指针

227 阅读1分钟

引用指针的区别:

  • 引用必须初始化
  • 引用不能为空
  • 引用不能再赋值。例如: 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&&

引用的效率:引用指针在汇编层面上一样的,性能没有差距。