设为首页 加入收藏

TOP

5.5.2 使用引用代替指针
2013-10-07 15:34:27 来源: 作者: 【 】 浏览:74
Tags:5.5.2 使用 引用 代替 指针

5.5.2  使用引用代替指针

C++(www.cppentry.com)程序员通常开始学的都是C。在C中,指针是唯一的按引用传递的机制,并且多年以来一直运行良好。在某些情况下仍然需要指针,但在许多情况下可以用引用代替指针。如果您开始学习的是C,您可能认为引用实际上没有增加新的功能。您可能认为引用只是引入了一种新的语法,其功能已经由指针提供。

用引用替换指针有许多好处。首先,引用比指针安全,因为不会直接处理内存地址,并且不会是nullptr。其次,引用在文体上比指针好,因为所用的语法与堆栈变量相同,没有使用诸如*以及&的符号。引用易于使用,因此将引用加入到您的风格中没有任何问题。遗憾的是,某些程序员认为如果在函数调用中看到&,他们知道被调用函数将改变对象;如果他们没有看到&,那么一定是按值传递。使用引用时,如果没有看到函数原型,他们无法判断函数是否将改变对象的值。这种思维方式是错误的。用指针传递未必意味着对象将会被改变,因为参数可能是const T*。传递指针或者引用是否会修改对象都取决于函数原型是否使用const T*、 T*、 const T& 或者T&。因此,为了判断函数是否可能改变对象,无论如何您都要查看函数原型。

使用引用的另一个好处是它明确了内存的所有权。如果您编写一个方法,其他程序员传递给您一个对象的引用,很明显您可以读取并修改这个对象,但是您无法轻易地释放对象的内存。如果传递的是一个指针,就不那么明显。您需要删除对象来清理内存么?还是调用者需要这样做?您的团队应该决定如何用变量传递技术表示内存所有权。处理内存较好的方法是使用智能指针,这一内容将在第21章详细讨论。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇5.5.3 使用自定义异常 下一篇5.3.2 通过设计分解

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·哈希表 - 菜鸟教程 (2025-12-24 20:18:55)
·MySQL存储引擎InnoDB (2025-12-24 20:18:53)
·索引堆及其优化 - 菜 (2025-12-24 20:18:50)
·Shell 中各种括号的 (2025-12-24 19:50:39)
·Shell 变量 - 菜鸟教 (2025-12-24 19:50:37)