cout << f1+f2 << endl;需要如何重载<<运算符
时间: 2023-10-30 15:18:27 浏览: 93
cout<<c解释为-运算符重载
重载 `<<` 运算符用于输出自定义类型的对象到输出流中。对于重载 `<<` 运算符,需要定义一个友元函数,其参数为 `ostream` 类型的输出流和需要输出的自定义类型的对象。
假设 `f1` 和 `f2` 是两个自定义类型的对象,下面是一个简单的重载 `<<` 运算符的示例:
```c++
#include <iostream>
using namespace std;
class Fraction {
private:
int numerator; // 分子
int denominator; // 分母
public:
Fraction(int num, int den) {
numerator = num;
denominator = den;
}
friend ostream& operator<<(ostream& os, const Fraction& f) {
os << f.numerator << "/" << f.denominator;
return os;
}
Fraction operator+(const Fraction& f) {
int num = numerator * f.denominator + f.numerator * denominator;
int den = denominator * f.denominator;
return Fraction(num, den);
}
};
int main() {
Fraction f1(1, 2);
Fraction f2(1, 3);
cout << f1 + f2 << endl; // 输出 5/6
return 0;
}
```
在上面的例子中,重载 `<<` 运算符的函数返回值为 `ostream&` 类型,这样可以实现运算符的链式调用。在函数体中,通过 `os << f.numerator << "/" << f.denominator` 将自定义类型的对象输出到输出流中。最后,返回输出流对象 `os` 本身,以实现链式调用。重载完 `<<` 运算符后,就可以使用 `cout << f1+f2 << endl;` 进行输出了。
阅读全文