重寫運算子
此討論圍繞重載運算子的挑戰
問題:
重載運算子
解決方案:理解函數指標
解決這個問題的關鍵在於認識到std::endl是一個函數。 std::cout 流利用運算子
自訂MyStream 的Endline 操作
要為my_stream 實現類似的功能,可以定義一個專門的endl 函數帶有以下簽名:
typedef MyStream& endl(MyStream& stream)
在此功能中,您可以執行您的功能所需的任何其他操作或修改特定的流實現,確保使用std::endl 時其行為符合預期。
重載運算子
要允許my_stream 也接受std::endl,請宣告另一個運算子
typedef std::basic_ostream<char, std::char_traits<char> > CoutType; typedef CoutType& (*StandardEndLine)(CoutType&); MyStream& operator<<(StandardEndLine manip)
此運算子在標準輸出流上呼叫std::endl,模仿std::cout的行為,同時與 my_stream 的自訂 endl 實作相容。
以上是我怎樣才能超載的詳細內容。更多資訊請關注PHP中文網其他相關文章!