引用与指针的区别:
引用必须初始化引用不能为空引用不能再赋值。例如: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&&
引用的效率:引用与指针在汇编层面上一样的,性能没有差距。