可能重复:
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多个文件了,所以我想尽可能早地实现统一的结构,并且无论最佳方法是什么。
提前致谢!
答案 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)
虽然我喜欢参考文献,但有一些常见的情况是您无法使用它们:
在我看来,混合使用引用和指针非常难看,所以我更喜欢指针。