私はOverloading the Stream Insertion Operator (<<)についての記事を読んでいました。オペレータが正しくカスケード接続されるように、出力ストリームオブジェクトを返す必要があることを強調しています。しかし、それは返品なしのようだ、出力はまだ正しいです、何が間違っている?ストリーム挿入演算子をカスケードすると動作しません
#include<iostream>
class Rational
{
friend std::ostream& operator<<(std::ostream&, const Rational&);
private:
int numerator;
int denominator;
public:
Rational(int num, int den): numerator{num}, denominator{den} {}
};
std::ostream& operator<<(std::ostream& lhs, const Rational& rhs)
{
lhs << rhs.numerator << "/" << rhs.denominator;
//return lhs;
}
int main()
{
Rational r1(3, 5);
std::cout << "The value of r1 is " << r1 << std::endl; // After commenting return lhs; still works fine
}