【问题标题】:why one of the parameter is of containing type in operator overloading为什么其中一个参数在运算符重载中属于包含类型
【发布时间】:2018-02-22 03:58:53
【问题描述】:

我的问题是为什么在运算符重载中必须有一个包含类对象作为参数是什么背后的原因是有一个这样的参数?

【问题讨论】:

  • 我没有找到正确的答案,这就是我发帖的原因,如果有人有答案,请给我发链接
  • 请包含一些代码,以便我们知道您的问题。

标签: c# operator-overloading


【解决方案1】:

您正在重载特定类/结构的运算符,这意味着至少有一个操作数必须属于同一类型 - 操作数由参数定义。

如果您考虑如何使用重载运算符,尤其是使用一元运算符(如 ++),会更容易。显然,为了调用重载的 ++,您必须将其应用于重载它的类型的类,否则编译器将如何知道您打算调用重载的运算符。

同样,对于二元运算符,编译器需要知道重载运算符的定义位置。如果您使用类 B 和 C 的参数重载类 A 上的 + 运算符,然后尝试将 B 的实例添加到 C 的实例中,为什么编译器会认为您打算在 A 上使用重载的运算符?如果 B 类和 C 类也有重载的 + 运算符怎么办?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 2011-10-06
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多