在给函数提供原始变量时,最好的做法是:
unsigned long x = 4;
void func1(unsigned long& val) {
val = 5;
}
func1(x);
Run Code Online (Sandbox Code Playgroud)
要么:
void func2(unsigned long* val) {
*val = 5;
}
func2(&x);
Run Code Online (Sandbox Code Playgroud)
IOW:有没有理由选择一个而不是另一个?
我是C++编程的新手,但我有Java经验.我需要有关如何将对象传递给C++中的函数的指导.
我是否需要传递指针,引用或非指针和非引用值?我记得在Java中没有这样的问题,因为我们只传递了保存对象引用的变量.
如果您还可以解释在哪里使用这些选项,那将会很棒.
根据我的理解:当你通过值传递时,函数会生成传递参数的本地副本并使用它; 当函数结束时,它超出范围.当您通过const引用时,该函数使用对无法修改的传递参数的引用.但是,我不明白为什么会选择一个而不是另一个,除非需要修改和返回参数.如果你有一个无效函数没有返回任何东西,为什么选择一个而不是另一个?
编辑:所以基本上通过const引用传递避免复制对象.那么在什么情况下复制对象好呢?我的意思是,如果它始终优化性能,为什么不一直使用const引用呢?