加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 朋友类定义

发布时间:2020-12-16 07:30:28 所属栏目:百科 来源:网络整理
导读:今天我查看了boost :: asio :: ip :: address的头文件源代码,发现了以下几行: class address{ // I removed some irrelevant lines here... public: /// Compare addresses for ordering. friend bool operator=(const address a1,const address a2) { retu
今天我查看了boost :: asio :: ip :: address的头文件源代码,发现了以下几行:

class address
{
  // I removed some irrelevant lines here...

  public:

  /// Compare addresses for ordering.
  friend bool operator>=(const address& a1,const address& a2)
  {
    return !(a1 < a2);
  }
};

现在我知道朋友的用途是什么,但我从未在类定义中看到它后面的定义.

所以我的问题是,这个朋友的声明是做什么的?在我看来,运算符> =不是这里的方法,但是也没有静态关键字.

在这种特殊情况下,朋友会替换静态吗?

解决方法

是的,不是.它不会替换static,因为在调用运算符时不需要限定名称.它有点像你不需要一个类实例来调用它.

就像在课堂外宣布运算符一样:

class address
{
  // I removed some irrelevant lines here...

  public:

  /// Compare addresses for ordering.
  friend bool operator>=(const address& a1,const address& a2);
};

inline bool operator>=(const address& a1,const address& a2)
{
   return !(a1 < a2);
}

您可以从类中访问私有和受保护的方法.

考虑在类中重载流操作符,可以应用相同的技术.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读