C++ 流运算符重载中的返回类型
程序的目的是获取输入,将这些值分配给类的成员并显示输出,输入和输出操作由重载流运算符完成C++ 流运算符重载中的返回类型,c++,inputstream,C++,Inputstream,程序的目的是获取输入,将这些值分配给类的成员并显示输出,输入和输出操作由重载流运算符完成 #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, MyClas
#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;
}
#包括
使用名称空间std;
类MyClass{
int x,y;
公众:
MyClass(inti,intj){
x=i;
y=j;
}
friend ostream&operator(istream&stream,MyClass&ob);
//friend void运算符(istream和stream、MyClass和ob);
};
ostream&运营商ob.y;
回流;
}
int main()
{
MyClass abt(30,23);
cin>>abt;
你认为下面的方法是如何工作的
stream >> ob.x >> ob.y;
这与:
(stream >> ob.x) >> ob.y;
那么stream>>ob.x
的值是多少呢
“返回值的目的是什么?”
其目的是,这些操作可以链接到如下语句中
MyClass abt(30,23);
int y;
cout << abt << endl;
// ^^^^^^^
cin >> abt >> y;
// ^^^^
MyClass-abt(30,23);
int-y;
cout abt>>y;
// ^^^^
在本例中,如果数据取自输入流cin
,并且在函数内部分配了值,为什么要返回istream
这样做是为了允许“链接”
运算符从>
两侧获取其两个参数。流来自左侧,变量来自右侧。执行此操作时
cin >> x >> y;
第一个表达式cin>>x
位于第二个表达式的左侧,这意味着cin>>x
的结果成为..>>y
的输入流。这就是为什么操作员需要返回已传递到其中的相同输入流。cout
和cin
彼此链接r到
istream
和ostream
的子类。现在,我们将要重载操作符作为全局函数,因为重载作为成员,操作符必须是左侧对象的成员。同样,要实现泛型流的函数,我们必须传递引用,而不是值.因此,我们必须选择使用friend函数重载它们。
因此:
现在din
的工作原理与cin
类似,因为din
引用了cin
。现在使用din
我们扫描对象的数据成员。扫描后我们必须链接它们(流)。因此引用必须返回到cin
istream & operator>>(istream &din,vector &vtemp)