マニピュレータの作成に次のコードを使用することができます。マニピュレータの演算子オーバーロード
#include<iostream>
ostream & symbol(ostream & output)
{
return output << "\tRs";
}
それが正常に働いています。次の文
cout << "Total amount: " << 567 << symbol;
は出力
Total amount: 567 Rs
を与えます。しかし、それが働いている理由を私は理解していませんでした。 C++で演算子のオーバーロードに関する以下の情報があります。
既存の演算子のみがオーバーロードされます。新しい演算子は作成できません。 シンボルは、既存の演算子ではありません。ステートメントで
(COUT < < "総額" < <シンボル;)は、< <が過負荷演算子であり、シンボルが可変/オブジェクトであると思われます。 しかし、シンボルを変数/オブジェクトとして宣言しませんでした。
なぜ彼らはreturnステートメントを使用している(リターン出力< < "\ TRS";)?。または(出力< < "\ TRS";)動作するはずです(私が試したが、動作していない:))
実は、私は知りませんが、私は(リターン "\ TRSは")だと思います。どのように上記のコードが動作している。上の演算子のオーバーロードの作業を説明する誰かがいますか?
あらかじめ定義されたオーバーロード 'operator <<(ostream&、ostream&(*)(ostream&))'が存在するのでしょうか? – Vlad
'operator <<(ostream&(* pf)(ostream &));'は[std :: ostream](http://www.cplusplus.com/reference/iostream/ostream/operator%3C%3C/)のメンバーです。 – Attila