通过参考传递v。通过指针 - 优点?

时间:2010-09-01 20:12:54

标签: c++ pointers function reference pass-by-reference

  

可能重复:
  When pass-by-pointer is preferred to pass-by-reference in C++?
  Are there benefits of passing by pointer over passing by reference in C++?
  How to pass objects to functions in C++?

大家好, 我正在努力开发一个面向对象的大型c ++应用程序框架,作为我的化学工程研究生研究的一部分。

我发现我的许多函数都指向自定义对象或STL对象。我发现在编写代码方面,这使得访问存储在其中的函数或变量变得更加困难。

除了简单之外,通过引用v传递指针是否有任何优点/缺点?

如果一个优于另一个优势,我可能会考虑重构我的代码以统一使用任何最佳方法。如果没有,我仍然可以重构为了可读性而一直使用引用(即不必取消引用)

我想再做出最好的决定,因为我的框架已经有40多个文件了,所以我想尽可能早地实现统一的结构,并且无论最佳方法是什么。

提前致谢!

6 个答案:

答案 0 :(得分:6)

主要区别在于引用不能为NULL(至少没有一些恶意编程)。对于语法糖,当需要参数时,我会通过引用传递。如果我有一个参数是可选的情况,我会通过指针传递。

总有例外。如果它符合当前样式,或者由于我必须处理的事情,将它作为指针可能更方便。

答案 1 :(得分:2)

首选参考文献。如果没有别的我做的,因为参考不能是NULL。它结束了许多愚蠢的错误,辩论,合同检查,记忆责任问题等......

答案 2 :(得分:2)

仅供参考我们今天早些时候稍微提出这个问题:

When to pass by reference and when to pass by pointer in C++?

规范建议是“将ref传递给const,除非另一个选择有充分理由”。

答案 3 :(得分:0)

如果您的选择是指针与引用,请使用引用。它们具有指针的所有优点,而没有解除引用未初始化指针的危险。

并且不要过早担心实现统一的方法 - 在这种情况下,即使代码库很大,在两者之间来回(一次一个函数)也不难。

答案 4 :(得分:0)

我个人喜欢通过指针传递,因为它在我的代码中提供了一定程度的一致性。我自动知道我的对象Foo是一个指针。同样适用于参考,所以一定要选择一个并坚持下去。

答案 5 :(得分:0)

虽然我喜欢参考文献,但有一些常见的情况是您无法使用它们:

  • 您希望将对象引用/指针存储在成员变量中,但不希望在类构造函数中要求该对象
  • 您希望在成员变量中存储对象引用/指针,并在运行时更改实例
  • 您希望为方法或函数选择一个对象参数

在我看来,混合使用引用和指针非常难看,所以我更喜欢指针。