zoukankan      html  css  js  c++  java
  • 【More Effective C++】Item 1

    Item 1:仔细区别pointer和reference

    对于很多C++初学者来说,pointer和reference的区别,以及什么情况下该使用reference,什么情况下要使用pointer,都是一个很容易混淆的问题。

    对于这个问题,大家只要明白一点,就能很容易把握这个度:没有所谓的Null reference,一个reference必须总代表一个对象。

    因此,给出以下明确的建议:

      1、当定义的变量需要改变以指向其他对象,或者它可以不指向任何对象时,应该使用pointer;

      2、如果这个变量总要指向一个对象,那么它应该定义为reference;

      3、在某些operator重载中,返回值用pointer无法达到语法需求时,也应该使用reference,如operator[],如果其返回值是pointer,那么当返回值变量作为赋值运算符“=”等的left value时,它会被写成*rvalue[2]=xx;这样看上去好像是指针数组,而实际上它不是。

    了解到上面的内容之后,我们还应该注意以下几点:

      1、不能定义空指针的引用,即char* p=0;  char& rc=*p;这是一个有害的行为,其结果连编译器都无法预知;

      2、reference的效率比pointer的效率要高一些,因为reference不需要进行有效性检查;

      3、pointer和reference还有另外一个区别:pointer可以被重新赋值,但是reference却总是指向它最开始初始化的那个对象。

  • 相关阅读:
    启用Netlogon debug,查看服务器验证瓶颈
    Windows Server 2016调整网卡顺序
    AD用户添加到组
    客户端查看/修改所属站点
    OpenCV相关库
    《塔木德》笔记
    《如何阅读一本书》笔记
    《创业维艰》笔记
    《社会心理学》笔记
    《智能商业》笔记
  • 原文地址:https://www.cnblogs.com/next-IT-direction/p/3585386.html
Copyright © 2011-2022 走看看