首頁 >後端開發 >C++ >運算子的友元函數與成員函數

運算子的友元函數與成員函數

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-14 16:07:16694瀏覽

Friend Function vs. Member Function for Operator

運算子

在C 中,運算子

運算子的友元函數方法

定義運算子時

friend bool operator<<(obj const&amp; lhs, obj const&amp; rhs);

當關係比較涉及檢查類別的私有成員時,建議使用此方法。由於友元函數可以存取類別的私有成員,因此它們可以直接執行比較。

運算子的成員函數方法

在這種方法中,運算子

ostream&amp; operator<<(obj const&amp; rhs);

當比較涉及可公開存取的資料或簡單操作時,此方法適用。但是,它有一個關鍵限制:如果比較需要存取私有成員,則不能使用成員函數方法。

方法比較

流式處理操作:
定義運算子時

相等和關係運算子:
對於 = 等運算子=、!=、 等,最好將它們定義為成員函數。這種方法可以輕鬆比較類別內的私有成員。此外,它還透過避免需要額外的友元函數來簡化程式碼。

範例

考慮以下具有 to_str() 方法的 Paragraph 類別範例:

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

        std::string const&amp; to_str() const { return m_para; }
};

好友功能方法:

friend ostream &amp; operator<<(ostream &amp;os, const Paragraph&amp; p) {
    return os << p.to_str();
}

成員函數方法:

ostream &amp; operator<<(ostream &amp;os) {
    return os << paragraph;
}

在這種情況下,首選友元函數方法,因為它允許存取私有成員m_para 用於流操作。

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

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