Xav*_*olt 7 c++ performance coding-style parameter-passing
我今天正在编写一个C++类,我编写了一个函数,它将参数作为参考而不是指针,这是我很少做的事情.我总是通过指针传递.所以我准备改回来,然后我意识到 - 我不知道我是否应该,或者它是否重要.
所以我转向你们.我有三种传递参数的方法:
//1: By pointer
Object* foo(Object* bar) {...}
//2: By reference
Object& foo(Object& bar) {...}
//3: By value (just for completeness)
Object foo(Object bar) {...}
Run Code Online (Sandbox Code Playgroud)
假设#3出于性能原因(是的,我知道编译器已经相当好,但仍然如此),其他两个或多或少相当.
那么:什么是"最好的"方法?指针?参考文献?两者的某种组合?或者甚至重要吗?技术原因是最好的,但风格的原因同样好.
更新: 我接受了YeenFei的答案,因为它处理了为我提供的差异(即使我然后明确地忽略了他的建议 - 我喜欢将NULL作为选项......).但每个人都提出了很好的观点 - 特别是GMan(在评论中)和Nemo,在回答性能和价值传递的过程中.如果您在这里寻求答案,请检查所有答案!