引用与指针

  1. 引用
    引用就是对象的别名,一切对引用的操作,就是对原对象的操作。
    引用经常存在于函数的参数和返回值当中。
    在重载某些操作符时,我们需要引用,例如重载下标操作符[].
    vector<int> vec{1,2,3,4,5};
    vec[2]=10;
    //这就是对[]进行重载之后,可以对vec的下标为2的变量进行赋值操作

     

    1. 参数传递准则
      如果我们想要提高效率,且不改变传递对象时,会使用常引用的方式传递,它仅仅需要把引用对象的地址压栈而已;
      如果我们采用传值的方式传递对象,例如拷贝构造函数就需要传值的方式,传值方式要调用构造函数和析构函数,因为会在被调函数里重新开辟内存,里面存储与对象相同的值,在调用完毕之后,析构该局部对象。
  2. 指针
    是一种复合数据类型。还可以说到野指针,野指针产生原因,野指针危害,如何避免产生野指针,智能指针。
  3. 指针与引用的区别
    1. 指针的操作符是*和->,引用的操作符是.;
    2. 引用必须在创建时初始化,指针不需要;
    3. 引用一旦定义,就不能改变,指针不是,指针可以改变指向;
    4. 引用不能是空,必须与合法的存储单元联系在一起,指针可以指向空。
    5. 指针是一种数据类型(指针是指向某种类型对象的复合数据类型),在64位操作系统中,指针占8字节,引用不是任何数据类型。
  4. 有指针为什么要引用?
    1. C++之父Bjarne Stroustrup曾说过,引入引用的目的主要是为了支持运算符重载;在重载某些操作符时,我们需要引用,例如重载下标操作符[],重载赋值操作符,方便连续赋值。
    2. 此外,指针经常会带来有严重错误,例如操作野指针,操作空指针,指针越界;引用不会出现这些问题,由于它必须初始化且不能改变指向,所以不会为空,也不会是野指针,所以它的安全性要比指针高。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值