Dain

写出一个可以工作的程序并不够

统计

留言簿(3)

积分与排名

良师益友

阅读排行榜

评论排行榜

引用和指针参数的关系

两种参数都允许函数修改实参指向的对象,都允许有效地向函数传递大类型对象。所以怎么样决定把函数参数声明成引用还是指针呢?
引用必须被初始化为指向一个对象,一旦初始化了,它就不能再指向其他对象。指针可以指向一系列不同的对象也可以什么都不指向。
因为指针可能指向一个对象或没有任何对象,所以函数在确定指针实际指向一个有效的对象之前不能安全解引用一个指针。如:
class  X;
void  fun(X  * x)
{
  
//  在解引用指针之前确信它非0
   if (x  !=   0 )
    
//  解引用指针
}
  
而,对于引用参数,函数不需要保证它指向一个对象。引用必须指向一个对象,不希望向指针那样进行解引用。如:
class Type;
void op(const Type &t1,const Type &t2);

int main()
{
  Type obj1;
  
// 设置obj1为某个值

  
// 错误:引用参数的实参不能为0
  op(obj1,0);

  
// 
  return 0;
}
如果一个参数可能在函数中指向不同的对象,或者这个参数可能不指向任何对象,则必须使用指针参数。
引用参数的一个重要用法,它允许有效地实现重载操作符的同时,还能保证用法的直观性。可以参考《C++ Primer》

ps 发现书287页的第二个程序例子是错的

posted on 2007-01-19 09:56 Dain 阅读(3215) 评论(1)  编辑 收藏 引用 所属分类: 笔记

评论

# re: 引用和指针参数的关系 2009-05-03 12:52 创意产品

C++ Primer上讲的比较详细  回复  更多评论   


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