C++对象:我应该何时使用指针或引用

raf*_*lxy 10 c++ pointers reference

我可以使用一个对象作为它的指针或它的引用.我知道不同之处在于必须手动删除指针,并且引用仍然存在,直到它们超出范围.

我什么时候应该使用它们?有什么实际区别?

这些问题都没有回答我的疑虑:

sus*_*att 18

引用基本上是一个带有限制的指针(必须在创建时绑定,不能反弹/ null).如果您的代码使用这些限制是有意义的,那么使用引用而不是指针允许编译器警告您意外违反它们.

它与const限定符非常相似:语言可以在没有它的情况下存在,它只是作为一种额外的奖励功能,可以更容易地开发安全的代码.

  • "语言可以在没有它的情况下存在" - C++可以在没有引用的情况下存在,但是会有一些你不能再做的事情,今天你可以做(​​因此它不会是*相同的*语言).例如,某些运算符重载结构只能通过引用而不是指针来完成.示例:如果要将赋值运算符与运算符链接一起使用. (3认同)

Ste*_*sop 8

"指针我必须删除并引用它们,直到它们的范围完成."

不,那是完全错误的.

new必须删除分配的对象[*].new不得删除未分配的对象.可以有一个指向未分配的对象的指针new,并且可以引用已分配的对象new.

指针或引用是访问对象的一种方式,但不是对象本身,并且与对象的创建方式无关.概念上的区别在于引用是对象的名称,而指针是包含另一个对象的地址的对象.实际差异,您如何选择使用哪一个,包括每个的语法,以及引用不能为空且无法重新设定的事实.

[*]用delete.new[]必须删除分配的数组delete[].有一些工具可以帮助跟踪分配的资源并为你做这些调用,称为智能指针,因此,自己明确地进行调用应该是非常罕见的,而不是仅仅安排它来完成,但不过它必须完成.