C++重载>>和<<操作员

C++ overloading >> and<< operators

本文关键字:lt gt 操作员 重载 C++      更新时间:2023-10-16
fstream& operator>> (fstream & in, class& obj);
fstream& operator<< (fstream & out, class& obj);

这种超载是否合法?
它的解决方案是什么?

实际上,我在fstream类对象的帮助下在程序中使用文件。 所以我需要重载>>&<<运算符,以便此类语句可以工作。

文件>>obj; 文件<<p>但会 ifstream& operator>> (ifstream&, classname& obj( Ofstream& operator>> (ofstream&, classname& obj(

为流对象工作?

合法的,但你应该使用更一般的形式:

istream& operator>>(istream& in, t& obj);
ostream& operator<<(ostream& out, const t& obj);

在运算符重载中,如果运算符作为成员重载,则它必须是运算符左侧对象的成员。运算符"<<"和">>"被称为"cout <<ob1"和"cin>> ob1"。因此,如果我们想使它们成为成员方法,那么它们必须成为 ostream 和 istream 类的成员,这在大多数时候不是一个好的选择。因此,这些运算符被重载为具有两个参数的全局函数,cout 和用户定义类的对象。