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

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

DDD
发布: 2025-01-03 04:14:39
原创
750 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板