普通的const引用:
const引用可以用下列内容初始化:
①字面值常量或右值表达式(只适用于const引用)
const int &ri = 7777;
②同类型const或非const对象
int i = 7;
const int ii = 7777;
const int &ri = i;
const int &rii = ii;
// i = 7, ri = 7
……
i = 8;
// i = 8, ri = 8
③相似类型const或非const对象
int i = 7;
const int &ri = i;
const double &rdi = i;
// i = 7, ri = 7, rdi = 7
……
i = 8;
// i = 8, ri = 8, rdi = 7
为什么rdi没有改变?
int i = 7;
const double &rdi = i;
会被编译器转化为
double temp = i;
const double &rdi = temp;
rdi真正指向的是temp,所以改变i后rdi不会改变
作为函数形参的const引用:
①在向函数传递大型对象时,使用const引用可以避免复制
②应该将不需要修改的引用形参定义为const引用
可以增加函数的灵活性,调用函数时,普通对象、const对象、字面值常量、右值表达式都可以作为参数
③传递指针的引用
void Func(int *&argv);