首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > 引用和指针参数的关系
【标  题】:引用和指针参数的关系
【关键字】:
【来  源】:http://www.cppblog.com/dqchen/archive/2007/01/19/17773.html

引用和指针参数的关系

两种参数都允许函数修改实参指向的对象,都允许有效地向函数传递大类型对象。所以怎么样决定把函数参数声明成引用还是指针呢?
引用必须被初始化为指向一个对象,一旦初始化了,它就不能再指向其他对象。指针可以指向一系列不同的对象也可以什么都不指向。
因为指针可能指向一个对象或没有任何对象,所以函数在确定指针实际指向一个有效的对象之前不能安全解引用一个指针。如:
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页的第二个程序例子是错的
创建一个基于模板的数据库记录集操作类(一):【上一篇】
图的DFS信息构建+割点,桥,极大连通子图三大法宝:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • MSDN WIKI 整合到了MSDN2, FxCop
  • 小鹿的绝情路
  • 音频播放代码
  • 可怕的 C#
  • Symbian多平台游戏引擎开发日记 2006-7-24
  • PHP收费空间的一点小漏洞
  • hexdump
  • [转载]谨献给为了知识执着的嵌入式初学者
  • 使用API在VB中创建状态栏
  • 读《人件》
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.