通过引用传递变量一次,并使用同一原型传递值一次

时间:2019-05-16 11:31:27

标签: c++

我知道按引用传递和按值传递有区别。

我想知道是否可以通过引用一次并通过值一次将变量发送给函数。

在我的示例中,我有以下原型,向量一次通过引用调用,一次通过值调用,但是问题是我需要做两次相同的函数,而不用另外一种方法来做相同的代码两次。

{{1}}

如果有一种处理方法,这将很有帮助。

非常感谢:)

1 个答案:

答案 0 :(得分:4)

您始终可以将带有引用的函数包装到不会修改参数的内容中

 // function taking reference
 void foo(T& t);

 // function taking value
 void foo_non_modifying(T t) { return foo(t); }

但是,我建议您修复此功能。如果函数采用非常量引用,则仅在需要修改参数时才应这样做。如果是这种情况,则函数如果不修改其参数就无法执行应做的事情。如果您希望同一个函数执行两项不同的操作,那么您可能宁愿要两个函数。

PS:我以某种方式忽略了问题的“具有相同签名”部分。坦白地说,由于已经提到的原因,我怀疑这样做是否合乎需要:如果两个功能在做的事情大不相同,那么它们应该是两个不同的功能而不是一个。