何时通过引用 C++ 中的函数来传递和返回

when to pass and return by reference to a function in c++

本文关键字:返回 函数 引用 C++ 何时通      更新时间:2023-10-16

首先,我用 c++ 做了一个复杂的类,它有两个成员数据——实数和虚数。形式为 A+IB)。当我尝试重载复杂类对象的运算符<<如下所示-

friend ostream operator<<(ostream ,complex );  in .h file
ostream operator <<(ostream o,complex c){
    o<<"real part"<<c.real;
    o<<"imaginary part<<c.imaginary;
    return o;
}  

在.cpp文件中, 它不起作用,而是打开一个ios_base文件并在那里显示错误。但是当我通过引用传递并通过引用返回时,相同的代码重载<<完美,如下所示-

ostream& operator <<(ostream& o,complex& c)
{

      //same as before
};

我不明白通过引用传递和返回有什么帮助?

std::ostream 是不可复制的类型类型。你不能复制o,所以你必须通过引用接收它,并通过引用返回它。

使用引用与不使用引用的规则很简单:如果要使用与调用者相同的对象,请通过引用传递它;如果要复制要传递的对象,请不要使用引用。

在某些情况下,只能通过引用传递对象。具体而言,当复制对象不正确时,其类的设计者可以禁止复制。表示输入/输出和同步资源的对象通常是不可复制的,这意味着必须通过引用或指针传递它们。