首頁 >後端開發 >C++ >我怎樣才能超載

我怎樣才能超載

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-14 02:01:10255瀏覽

How Can I Overload the

重寫運算子

此討論圍繞重載運算子的挑戰

問題:

重載運算子

解決方案:理解函數指標

解決這個問題的關鍵在於認識到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&amp; (*StandardEndLine)(CoutType&amp;);

MyStream&amp; operator<<(StandardEndLine manip)

此運算子在標準輸出流上呼叫std::endl,模仿std::cout的行為,同時與 my_stream 的自訂 endl 實作相容。

以上是我怎樣才能超載的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn