定义参考
引用的行为类似,但不完全像 const 指针。通过将&符号 &
后缀为类型名称来定义引用。
int i = 10;
int &refi = i;
这里,refi
是与 i
绑定的参考。
引用抽象了指针的语义,就像底层对象的别名一样:
refi = 20; // i = 20;
你还可以在单个定义中定义多个引用:
int i = 10, j = 20;
int &refi = i, &refj = j;
// Common pitfall :
// int& refi = i, k = j;
// refi will be of type int&.
// though, k will be of type int, not int&!
必须在定义时正确初始化引用,之后不能修改引用。以下代码导致编译错误:
int &i; // error: declaration of reference variable 'i' requires an initializer
与指针不同,你也无法直接绑定对 nullptr
的引用:
int *const ptri = nullptr;
int &refi = nullptr; // error: non-const lvalue reference to type 'int' cannot bind to a temporary of type 'nullptr_t'