首頁 > 後端開發 > C++ > 運算子重載的友元函數與成員函數:何時首選友元函數 `

運算子重載的友元函數與成員函數:何時首選友元函數 `

DDD
發布: 2025-01-03 04:14:39
原創
750 人瀏覽過

Friend Function vs. Member Function for Operator Overloading: When is a Friend Function Preferred for `

運算子重載:「

在 C 中,重載運算子可以實作為友元函數或成員函數。當涉及到流插入運算子「

使用友元函數

friend ostream & operator<<(ostream & os, const Paragraph& p) {
    return os << p.to_str();
}
登入後複製

此方法通常用於流運算符,因為:

  • 它允許存取流物件(os),這是執行流所必需的插入。
  • 它遵循流運算子返回流引用以用於連結目的的約定。

使用成員函數

ostream & operator<<(Paragraph const& rhs);
登入後複製

雖然很容易想到成員函數應該用於所有類別方法,不建議將這種方法用於「

  • 您無法從成員函數存取流物件(os)。
  • 您需要手動呼叫成員函數中的「to_str」方法,這是多餘且容易出錯的。
  • 流運算子作為成員並不符合慣例

範例

考慮以下類別:

class Paragraph {
    std::string m_para;

public:
    Paragraph(std::string const& init) : m_para(init) {}

    std::string const& to_str() const { return m_para; }
};
登入後複製

基本原理

基本原理
  • 基本原理
  • 在這種情況下,使用友元函數“
  • 它提供對流物件 (os) 的存取以進行串流處理。
它遵循返回流所引用的流運算符的約定。 與使用成員函數相比,它減少了程式碼重複和潛在錯誤。

以上是運算子重載的友元函數與成員函數:何時首選友元函數 `的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板