关于引用

引用==别名

只是给已有变量起一个别名(别名与变量地址相同)

  1. 一个变量可以有多个别名(就像一个人可以有很多小名)
  2. 引用必须在创建时就初始化(起别名时总要知道是给谁起)
  3. 引用只能在初始化时,引用一次,引用后就不能再改变为其它变量的引用

const 引用

一个变量加上const,就是常变量(常量的一种),具有常性,不可直接修改
注意点:
   int d1 = 4;
   const int & d2 = d1;
   d1 = 5; // d1改变 d2的值也会改变。   
   //d2 = 6;  // 此时的d2为常变量,不能进行赋值
    const int d3 = 1;
    const int & d4 = d3;
    //int&d5 = d3;   // 常量具有常性,只有常引用可以引用常量  

    const int & d6 = 5; //这句为什么对呢? 
这句将一个文字常量转化为一个常变量,编译器在这里自己开辟一个值为5的无名整型常变量,然后再给d6,其实就是上面的一种简化
    double d7 = 1.1;
    //int& d8 = d7; //d7是double类型,d8是int,d7赋值给 d8时要生成一个临时变量  
    // 也就是说d8引用的是这个带有常性的临时变量,所以不能赋值。    
    const int& d9 = d7; 

传值返回&传引用返回

这里写图片描述

  • 传值返回时,是传一个值
  • 传引用返回时只是传一个地址
结论:
1. 不要返回一个临时变量的引用。
2. 如果返回对象出了当前函数的作用域依旧存在,则最好使用引用返回,因为这样更高效,但如果只是临时的变量,那么出了作用域就销毁掉了,就找不到传回的地址了。

虽然引用原理也是通过访问地址,和指针有点相似,但根指针是有区别的

引用和指针的区别和联系(重点)

1. 引用只能在定义时初始化一次,之后不能改变指向其它变量(从一而终);指针变量的值可变。
2. 引用必须指向有效的变量,指针可以为空。
3. sizeof指针对象和引用对象的意义不一样。sizeof引用得到的是所指向的变量的大小,而sizeof指针是对象地址的大小。
相对而言,引用比指针更安全。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值