運算子
在C 中,運算子
運算子的友元函數方法
定義運算子時
friend bool operator<<(obj const& lhs, obj const& rhs);
當關係比較涉及檢查類別的私有成員時,建議使用此方法。由於友元函數可以存取類別的私有成員,因此它們可以直接執行比較。
運算子的成員函數方法
在這種方法中,運算子
ostream& operator<<(obj const& rhs);
當比較涉及可公開存取的資料或簡單操作時,此方法適用。但是,它有一個關鍵限制:如果比較需要存取私有成員,則不能使用成員函數方法。
方法比較
流式處理操作:
定義運算子時
相等和關係運算子:
對於 = 等運算子=、!=、 等,最好將它們定義為成員函數。這種方法可以輕鬆比較類別內的私有成員。此外,它還透過避免需要額外的友元函數來簡化程式碼。
範例
考慮以下具有 to_str() 方法的 Paragraph 類別範例:
class Paragraph { public: Paragraph(std::string const& init) : m_para(init) {} std::string const& to_str() const { return m_para; } };
好友功能方法:
friend ostream & operator<<(ostream &os, const Paragraph& p) { return os << p.to_str(); }
成員函數方法:
ostream & operator<<(ostream &os) { return os << paragraph; }
在這種情況下,首選友元函數方法,因為它允許存取私有成員m_para 用於流操作。
以上是運算子的友元函數與成員函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!