【问题标题】:Operator[] overloading using friend function使用友元函数重载运算符 []
【发布时间】:2017-07-26 15:01:29
【问题描述】:

为什么不能将下标运算符 (operator[]) 重载为友元函数?

【问题讨论】:

  • 您可能应该添加一个语言标签(我猜c++来自friend-function标签的描述),以便您的问题受到更多关注。
  • 感谢@Aaron 的建议

标签: c++ operator-overloading operator-keyword friend-function


【解决方案1】:

正如 Bjarne Stroustrup 在D&E book 中所说:

但是,即使在 C++ 的原始设计中,我也将运算符 []()-> 限制为成员。这似乎是一个无害的限制,消除了一些模糊错误的可能性,因为这些运算符总是依赖并通常修改其左操作数的状态。但是,这可能是不必要的保姆。

【讨论】:

    【解决方案2】:

    Friends 不是你的类的扩展,只是一个关键字说 xy 可以访问你的类的私有或受保护成员。您不能通过这种方式覆盖或添加函数。

    友元声明出现在类主体中,并授予函数或其他类访问友元声明所在类的私有和受保护成员的权限。

    Source

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-09
      相关资源
      最近更新 更多