When to use references as parameters in C++

Possible Duplicate:
What's the difference between passing by reference vs. passing by value?

If I have a function that takes in some parameters and then does something with the parameters without needing to change their inherent value, is there any benefit from using pass by reference versus pass by value?


Yes. Passing by value copies the argument, which might be very expensive (or not even possible). If you want to pass by reference, but not modify the object, pass by const -reference.

As an example of an object that cannot be passed by value:

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

Here is the general guide:

  • Pass by reference when
  • You need to cause a side effect on the object that will be visible to the caller
  • or you cannot pass by value because of the lack of an accessible copy constructor or something and you need side effects
  • Pass by const reference when you have
  • A large object
  • and/or you cannot pass by value
  • and/or no need for side effects
  • Pass by value when
  • The object is small
  • and/or You do not need side effects
  • and/or You need a copy of the value to work with anyway
  • 链接地址: http://www.djcxy.com/p/20610.html

    上一篇: C ++通过引用或按值传递?

    下一篇: 何时将引用用作C ++中的参数