何时在C ++中使用引用作为参数

时间:2011-12-20 07:31:53

标签: c++ function reference

  

可能重复:
  What's the difference between passing by reference vs. passing by value?

如果我有一个函数接受一些参数然后用参数做某事而不需要改变它们的固有值,那么使用传递引用和传递值有什么好处吗?

2 个答案:

答案 0 :(得分:4)

是。传递值会复制参数,这可能非常昂贵(甚至不可能)。如果您想通过引用传递但不修改对象,请通过const - 参考。

作为无法通过值传递的对象的示例:

class Foo {
public:
    Foo() {}
private:
    Foo(const Foo&); // copy-constructor is not accessible
}

答案 1 :(得分:3)

以下是一般指南:

  • 时通过参考
    • 您需要对调用者可见的对象造成副作用
    • 由于缺少可访问的复制构造函数或者您需要副作用而无法传递值
  • 当你有时,通过const参考
    • 大型物件
    • 和/或您无法按值传递
    • 和/或无需副作用
  • 时按值传递
    • 对象很小
    • 和/或您不需要副作用
    • 和/或您需要该值的副本才能使用