jokes000

区分指针和引用

摘自:《More Effective C++》

      指针和引用看上去非常不同(指针使用“*”和“->"操作符,引用使用的是”.“),但是它们所做的事情似乎很类似。指针和引用都可以间接地指代其他对象。那么,如何决定什么时候使用其中一个而不是另外一个?

      首先,要认识到不存在类似于空引用(null reference)这样的东西。引用必须指代某个对象。因此,如果有一个用于指代另一个对象的变量,但是有可能没有这么一个可供指代的对象,这时就应该把这个变量声明成指针,因为这样就可以把它设为空值(null)。反之,如果这个变量必须指代一个对象,也就是说,不允许这个变量为空值,那么你基本上应该把这个变量声明成引用。

      不存在空引用这个事实意味着,使用引用比使用指针更搞笑。因为在使用引用之前不需要测试是否有效。
different

      另一个重要不同之处:指针可以被重新赋值用以指向另外一个不同的对象;而引用则总是指向初始化时它所指代的对象。
Another Difference

      总而言之,当需要考虑以下两种情况的时候,你应该使用指针:
            A.有可能什么也不指向(这种情况下,你可以把指针设为null);
            B.需要能够在不同时候指向不同的对象。
           
      当你知道总是会指向某一个对象并且还知道一旦指向那个对象,就不会再指向其他对象的时候,应该使用引用。
      还有一种情况应该使用引用,即当实现某些操作符的时候。最常见的例子是[ ]操作符。这个操作符通常需要返回一个值作为(下一个)赋值语句的赋值目标。
Difference

      当你知道要指代某个对象并且不会再指代其他的东西时,那就应该选择引用。当实现某些操作符的时候,如果这些操作符在语义上的要求使得指针不可行,此时仍然需要使用引用。其他情况下,应该使用指针。

posted on 2011-10-12 21:20 Voices. 阅读(368) 评论(0)  编辑 收藏 引用 所属分类: C++ Notes


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理