C++法则10:引用本身是一个“别名”(alias),一旦绑定到一个对象后,就不能再重新绑定到其他对象。

C++法则10:引用本身是一个“别名”(alias),一旦绑定到一个对象后,就不能再重新绑定到其他对象。

在C++中,引用(reference)是一个已存在对象的别名。一旦引用被初始化绑定到一个对象,它就不能再被重新绑定到其他对象。这一特性是引用与指针(pointer)的主要区别之一。

关键点:
  1. 别名特性:引用是某个对象的另一个名字,对引用的所有操作都会直接作用于它绑定的对象。

  2. 必须初始化:引用在定义时必须初始化,且不能为null(必须绑定到有效对象)。

  3. 不可重新绑定:引用一旦绑定到一个对象,其绑定关系无法更改。

  4. 与指针的区别

    • 指针可以重新指向其他对象(或nullptr)。

    • 引用更安全,但灵活性较低。

int x = 10;
int y = 20;
int& ref = x;  // ref是x的别名,绑定到x

ref = 30;      // 修改ref等价于修改x,此时x=30
std::cout << x; // 输出30

// 试图将ref重新绑定到y(错误!)
int& ref = y;   // 编译错误:ref已存在,不能重新声明

// 指针可以重新指向
int* ptr = &x;
ptr = &y;       // 合法:指针ptr现在指向y
为什么设计为不可重新绑定?
  • 安全性:避免引用在程序中被意外修改指向其他对象。

  • 语义清晰:引用作为别名,其生命周期内始终代表同一个对象。

注意事项:
  • 函数参数传递时,常用const T&避免拷贝且防止修改。

  • 如果需要“重新绑定”的能力,应使用指针(如T*)或智能指针(如std::unique_ptr)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值