2024.3.2
1 引用变量的初始化:
单纯的使用引用变量不作为参数时一定要在其定义时指向一个变量。
2 引用变量的本质
如果我们定义一个引用变量为int & p = a;
引用变量p本质上为 int *const p //指向不能更改,在初始化时已经固定,但是指向可以更改。
3 引用变量作为函数参数时 一定要注意数据类型相同
此时的字符串变量 str 和 引用变量 数据类型相同,此时没有任何问题。
而把实参换为字符串常量的时候这时候报错,报错为[Error] cannot bind non-const lvalue reference of type 'std::string&' {aka 'std::__cxx11::basic_string<char>&'} to an rvalue of type 'std::string' {aka 'std::__cxx11::basic_string<char>'}
一个为常量一个为变量类型不符合
那我们该如何修改才能不报错呢?
将参数 s 修改为为字符串引用常量,此时与实参类型相同,便可成功编译。
4 引用变量作为参数没有拷贝数据,如果实参数据类型比较大/复杂 可以提高效率
这是为什么呢?上面我们也提到过引用变量的本质是 (数据类型) *const p
所以对引用变量的操作直接在实参对应的空间下操作,就像c 里的 地址传递。