我知道按引用传递和按值传递有区别。
我想知道是否可以通过引用一次并通过值一次将变量发送给函数。
在我的示例中,我有以下原型,向量一次通过引用调用,一次通过值调用,但是问题是我需要做两次相同的函数,而不用另外一种方法来做相同的代码两次。
{{1}}
如果有一种处理方法,这将很有帮助。
非常感谢:)
答案 0 :(得分:4)
您始终可以将带有引用的函数包装到不会修改参数的内容中
// function taking reference
void foo(T& t);
// function taking value
void foo_non_modifying(T t) { return foo(t); }
但是,我建议您修复此功能。如果函数采用非常量引用,则仅在需要修改参数时才应这样做。如果是这种情况,则函数如果不修改其参数就无法执行应做的事情。如果您希望同一个函数执行两项不同的操作,那么您可能宁愿要两个函数。
PS:我以某种方式忽略了问题的“具有相同签名”部分。坦白地说,由于已经提到的原因,我怀疑这样做是否合乎需要:如果两个功能在做的事情大不相同,那么它们应该是两个不同的功能而不是一个。