Essential C++から: 4.10 iostream 演算子のクラス インスタンスの提供
多くの場合、クラスのオブジェクトの読み取りと書き込みの両方が必要になります。たとえば、trian クラス オブジェクトを表示するには、次のように記述できるようにします。
cout << train << endl;
これをサポートするには、出力演算子のオーバーロードされたインスタンスを提供する必要があります。
ostream& operator<< (ostream &os, const Triangular &rhs)
{
os << "(" << rhs.beg_pos() << "," << rhs.length() << ")";
rhs.display(rhs.length(), rhs.beg_pos(), os);
return os;
}
関数に渡されたものと同じ ostream オブジェクトを返します。これにより、複数の出力演算子を連結できます。どちらのオブジェクトも参照によって渡されます。各出力操作は ostream オブジェクトの内部状態を変更するため、ostream オペランドは const として宣言されません。
なぜ ostream オペランドを const として宣言できないのか、ちょっと混乱しています。出力演算子が次のように宣言されている場合:
const ostream& operator<< (const ostream &os, const Triangular &rhs)
上記の宣言に問題はありますか?
ありがとう