使用引用

一、什么是引用
  引用是别名,创建引用时,务必要初始化为另一个对象,不能为空。
  int &rSomeRef = someInt;
  对rSomeRef的操作实际上就是对someInt的操作。
  rSomeRef = 7; //somInt = 7
  不能给引用重新赋值。
  int someTwo = 9;
  rSomeRef = someTwo; //实际上rSomeRef还是指向的是someInt这个对象。
  指针可以为空,但是引用不能为空。
  混合定义引用和其他变量时应该分开
  Cat &rfirst, second; //这里rfirst是引用,second是变量
  最好写成:
  Cat &rfirst;
  Cat  second;
二、按引用传递函数参数
  使用引用的语法与使用指针的语法不同,但是效果一样:不是创建一个作用域为整个函数的副本,而是相当于让函数能够访问原始对象。
  1.使用引用实现swap().
 
  2.按引用传递以提高效率
    按值将对象传递给函数时, 都将创建该对象的一个副本,而按值从函数返回 一个对象时,将创建另一个副本。
    对于大型的对象(如结构或类对象),复制的开销可能很高。每当创建这些临时副本时,都要调用一个特殊的构造函数:复制构造函数。函数返回时,临时对象将被销毁,这将调用对象的析构函数。
  3.传递const指针
     如果使用按地址传递对象,但是不允许做任何修改,这是可以使用const来修饰指针。同时也可以修饰引用。     

    注意:由于functionTwo被指向的对象时const,因此不能调用非const方法setAge。如果不将theCat.setAge(8);这行注释掉,是不能编译过的。
    4.何时使用引用和指针
    相对指针来说,更多C++程序员喜欢使用引用,然而引用不能被重新赋值,如果需要首先指向一个对象,然后再指向另一个对象,就使用指针。
    第二种情况是使用new运算符来创建对象,如果 new返回空,引用将可能为空。所以安全的做法如下:
    int pInt = new int;
    if(pInt != NULL)
    int &rInt =*pInt;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值