程序的目的是获取输入,将这些值分配给类的成员并显示输出,输入和输出操作是通过重载流运算符来完成的。
#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”。我已经看到所有教程都在运算符重载函数中返回流。返回值的目的是什么?
在示例中,如果数据是从输入流中获取的cin
并且值是在函数内部分配的,为什么应该istream
被退回来?
这样做是为了允许“链接”。
该运算符从两侧获取两个参数>>
。流来自左侧,变量来自右侧。当你这样做时
cin >> x >> y;
第一个表达式cin >> x
位于第二个表达式的左侧,这意味着结果cin >> x
变成... >> y
的输入流。这就是为什么操作符需要返回已传递给它的相同输入流。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)