【问题标题】:Translating operator== in C++ to Objective-C将 C++ 中的 operator== 转换为 Objective-C
【发布时间】:2012-10-23 09:56:34
【问题描述】:

我正在将一些 C++ 代码转录成 ObjC。我正在查看的 operator==() 将其私有成员一一进行比较,并在它们都为真时返回真。

ObjC 中 operator==() 的等效实现是什么?

通过浏览,我在 ObjC 中看到:

  • -isEqual
  • -isEqualTo
  • -喜欢
  • ==(内置?不可覆盖?)
  • 还有其他我错过了吗?

这些方法的协议是什么? (深度比较或浅比较等...?)我应该使用哪一个来替换比较其所有成员的 operator==()?

【问题讨论】:

  • == 只会比较 2 个对象的指针。就这么简单,你不能覆盖它。您必须创建自己的方法来比较自己的类。
  • 这里对isEqual:hash的一些讨论:stackoverflow.com/questions/1112373/…
  • @Monolo +1 获取有用的链接 - ty

标签: c++ objective-c operators


【解决方案1】:

isEqual: 可能是您想要覆盖的内容。还要确保hash 为两个相等的对象返回相同的值。

没有真正的比较协议。做任何对你的班级有意义的事情。如果您要比较 operator==() 中的所有成员,那将是深度比较,是的,请使用 isEqual:

【讨论】:

  • ty - 接受 - 太糟糕了,没有可比较的协议 - 有这么多不同的协议肯定会导致歧义/混乱。
猜你喜欢
  • 1970-01-01
  • 2017-10-10
  • 2012-11-15
  • 1970-01-01
  • 2017-10-24
  • 1970-01-01
  • 1970-01-01
  • 2012-10-06
  • 2011-12-04
相关资源
最近更新 更多