首页 > 后端开发 > C++ > 应`运算符

应`运算符

DDD
发布: 2024-12-17 21:42:22
原创
788 人浏览过

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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板