首页 >后端开发 >C++ >运算符重载的友元函数与成员函数:何时首选友元函数 `

运算符重载的友元函数与成员函数:何时首选友元函数 `

DDD
DDD原创
2025-01-03 04:14:39765浏览

Friend Function vs. Member Function for Operator Overloading: When is a Friend Function Preferred for `

运算符重载:“

在 C 中,重载运算符可以实现为友元函数或成员函数。当涉及到流插入运算符“

使用友元函数

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

此方法通常用于流运算符,因为:

  • 它允许访问流对象(os),这是执行流所必需的插入。
  • 它遵循流运算符返回流引用以用于链接目的的约定。

使用成员函数

ostream & operator<<(Paragraph const& rhs);

虽然很容易想到成员函数应该用于所有类方法,不建议将这种方法用于“

  • 您无法从成员函数访问流对象(os)。
  • 您需要手动调用成员函数中的“to_str”方法,这是多余且容易出错的。
  • 流运算符作为成员并不符合惯例

示例

考虑以下类:

class Paragraph {
    std::string m_para;

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

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

基本原理

在这种情况下,使用友元函数“

  • 它提供对流对象 (os) 的访问以进行流式处理。
  • 它遵循返回流引用的流运算符的约定。
  • 与使用成员函数相比,它减少了代码重复和潜在错误。

以上是运算符重载的友元函数与成员函数:何时首选友元函数 `的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn