何时通过引用 C++ 中的函数来传递和返回
when to pass and return by reference to a function in c++
首先,我用 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
,所以你必须通过引用接收它,并通过引用返回它。
使用引用与不使用引用的规则很简单:如果要使用与调用者相同的对象,请通过引用传递它;如果要复制要传递的对象,请不要使用引用。
在某些情况下,只能通过引用传递对象。具体而言,当复制对象不正确时,其类的设计者可以禁止复制。表示输入/输出和同步资源的对象通常是不可复制的,这意味着必须通过引用或指针传递它们。
相关文章:
- 为什么将值返回函数传递给重载=运算符对运算符函数有效,而对其他运算符无效
- 编译器警告:执行到达值返回函数的末尾而不返回值
- 接收和返回函数指针的函数指针的类型?
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- C++函数链返回函数
- 返回函数指针的函数的签名
- 由于值返回函数中的错误,程序无法编译.它说未声明的标识符
- 非常量引用返回函数在常量值返回函数上用作 r 值
- 如何在 C++ 中从 void 返回函数访问变量
- 返回函数中带有 2 个可选 ctor 的对象
- 如何在 c++ 中返回函数的结构向量
- 返回 C++ 函数中的引用
- 使用向量时,当返回函数更改时,无法看到输出
- 如何在递归中使用返回函数
- 返回函数模板的类型C++作为第二个模板参数
- 为什么静态指针返回函数中有一个"静态"键?
- 递归返回函数,在特殊情况下不返回
- 从类返回函数
- 从类成员函数返回函数指针
- 从返回函数中推断不存在的模板参数