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却总是指向它最开始初始化的那个对象。

  • 相关阅读:
    c++ Knight Moves 超级升级版
    百度招聘彩蛋
    C++ 八数码问题宽搜
    c++ 动态规划(数塔)
    c++ 深度优先搜索(迷宫)
    c++ 宽搜(倒水)
    c++ matrix逆时针螺旋
    c++ 基数排序
    c++ 二分答案(解方程)
    c++ 二分答案(数组查找)
  • 原文地址:https://www.cnblogs.com/next-IT-direction/p/3585386.html
Copyright © 2011-2022 走看看