C++ 中的引用 引用与指针的区别

引用即别名

基本用法

int a=5;
int &b=a;

这里b就是a的一个引用,我们对a或b的修改都会影响对方,因为两者实际上是一个对象,只不过有不同的名字

引用的类型需要和与之绑定的对象严格匹配,除了以下两种情况

  • const的引用
    double a = 3.14;
    const int b = a;
    //把 b 输出得到 3 

此处对 b 的操作应该是整数运算,但是 a 却是一个双精度浮点数而非整数。为了确保 b 绑定一个整数,编译器把上述代码变成了如下形式:

    double a = 3.14;
    const int temp = a;
    const int &b = temp;

还有一点值得注意的是如果const引用的是一个非const对象,那么这个引用实际的对象是一个非常量,我们我可以通过其他方法改变这个const引用的值。。。自己都被绕晕,还是看代码

    int a = 5;
    const int &b = a;
    a = 3;
    cout << b << endl;//输出3

这里,虽然b是一个const引用,我们修改a的值,仍然会影响b

  • 存在继承关系的类
    我们可以将积累的指针或引用绑定到派生类对象上,这部分还没深入理解,留坑待补…

引用与指针的区别

  1. 非空区别:任何情况下不能使用指向空值的引用
  2. 合法性区别:使用引用前不需要测试它的合法性,指针则总是需要先判断是否为空
  3. 可修改区别:指针可以被重新赋值以指向另一个不同的对象,引用总是指向在初始化时被指定的对象
  4. 应用区别:应该根据不同的使用场景来使用引用还是指针
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值