引用
内容简介
引用是对象的别名。它让函数可以直接操作实参,也能避免部分指针带来的空指针和解引用风险。引用是 C++ 很核心的语法。
用法
基本引用
int a = 10;
int& ref = a;
ref = 20;
std::cout << a << std::endl; // 20引用作函数参数
void swap_value(int& a, int& b)
{
int temp = a;
a = b;
b = temp;
}const 引用
void print_name(const std::string& name)
{
std::cout << name << std::endl;
}引用作返回值
int& at(std::vector<int>& values, std::size_t index)
{
return values[index];
}调用结果可以作为左值:
at(values, 0) = 100;最佳代码实践
- 需要修改实参时使用普通引用,例如
T&。 - 只读取大对象时使用
const T&,避免拷贝。 - 不需要为空的参数优先用引用;可能为空或需要重新指向时用指针。
- 返回引用时,必须保证被引用对象在函数返回后仍然存在。
错误用法
int& ref; // 错误:引用必须初始化int& bad()
{
int value = 10;
return value; // 错误:返回局部变量引用
}void set_value(const int& value)
{
value = 10; // 错误:const 引用不能修改
}注意事项
- 引用一旦绑定,不能改为引用另一个对象。
const int& ref = 10;合法,因为临时对象生命周期会延长到引用生命周期结束。- 引用常被理解为“语法层面的安全指针”,但写代码时应把它当作别名,而不是指针。
学习路径
- 上一节:cpp进阶
- 当前阶段:cpp进阶编程
- 下一节:cppNewAndDelete操作符