首頁 >後端開發 >C++ >應`運算符

應`運算符

DDD
DDD原創
2024-12-17 21:42:22613瀏覽

Should `operator

「運算子

實現運算子

對於比較運算子(==、!= 等),建議將它們視為類別中的成員函數。由於該類別本質上是其自身的朋友,因此它可以毫不費力地存取和比較其實例的私有成員。此外,透過獨立函數啟用一個操作數的自動轉換可能會導致意想不到的後果;因此,首選成員函數。

相反,在處理流運算子(>)時,它們需要外部函數,因為它們需要存取類別控制之外的流物件。這些函數可以是類別的友元,也可以利用處理流的公共方法。

流運算子通常會傳回對流物件的引用,從而實現操作的無縫連結。以下是示範此方法的範例:

#include <iostream>

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

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

    bool operator==(Paragraph const& rhs) const
    {
        return m_para == rhs.m_para;
    }
    bool operator!=(Paragraph const& rhs) const
    {
        return !(this->operator==(rhs));
    }
    bool operator<(Paragraph const& rhs) const
    {
        return m_para < rhs.m_para;
    }

private:
    friend std::ostream & operator<<(std::ostream &os, const Paragraph& p);
    std::string m_para;
};

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

int main()
{
    Paragraph p("Plop");
    Paragraph q(p);

    std::cout << p << std::endl << (p == q) << std::endl;
}

透過了解每個操作的性質並遵循適當的實作選擇,您可以有效地利用運算符

以上是應`運算符的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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