gpt4 book ai didi

c++ - 流运算符重载中的返回类型

转载 作者:太空狗 更新时间:2023-10-29 23:50:35 25 4
gpt4 key购买 nike

程序的目的是接受输入,将这些值分配给类的成员并显示输出,输入和输出操作是通过重载流运算符完成的。

#include <iostream>
using namespace std;
class MyClass {
int x, y;
public:
MyClass(int i, int j) {
x = i;
y = j;
}

friend ostream& operator<<(ostream &stream, MyClass ob);
friend istream& operator>>(istream &stream, MyClass &ob);
// friend void operator<<(ostream &stream, MyClass ob);
// friend void operator>>(istream &stream, MyClass &ob);
};

ostream& operator<<(ostream &stream, MyClass ob)
{
stream << ob.x << ' ' << ob.y << '\n';

return stream;
}

istream& operator>>(istream &stream, MyClass &ob)
{
stream >> ob.x >> ob.y;

return stream;
}

int main()
{
MyClass abt(30,23);
cin>>abt;
cout<<abt;
return 0;
}

在示例中,如果数据取自输入流“cin”并且值在函数内部赋值,为什么要返回“istream”。我看过所有教程都在运算符重载函数中返回流。返回值的目的是什么?

最佳答案

In the example, if data is taken from input stream cin and the values are assigned inside the function, why should istream be returned back?

这样做是为了允许“链接”。

运算符从 >>> 的两边获取它的两个参数。流来自左边,变量来自右边。当你这样做的时候

cin >> x >> y;

第一个表达式cin >> x在第二个表达式的左边,也就是说cin >> x的结果变成了... >> y 的输入流。这就是运算符需要返回已传递给它的相同输入流的原因。

关于c++ - 流运算符重载中的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28710021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com