“运算符
实现运算符
对于比较运算符(==、!= 等),建议将它们视为类中的成员函数。由于该类本质上是其自身的朋友,因此它可以毫不费力地访问和比较其实例的私有成员。此外,通过独立函数启用一个操作数的自动转换可能会导致意想不到的后果;因此,首选成员函数。
相反,在处理流运算符(>)时,它们需要外部函数,因为它们需要访问类控制之外的流对象。这些函数可以是类的友元,也可以利用处理流的公共方法。
流运算符通常返回对流对象的引用,从而实现操作的无缝链接。以下是演示此方法的示例:
#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中文网其他相关文章!