gpt4 book ai didi

c++ - 平等的定义

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:49:27 25 4
gpt4 key购买 nike

在 C++ 中重载“==”运算符时,是否有关于相等性明确含义的标准定义,或关于“==”应如何表现的一组指南?

我目前有一个类没有将其整个自身存储在内存中。它基本上使用优先级队列来确定自身内部对象的使用频率,以及何时从队列末尾弹出对象,将它们从内存中删除并写入磁盘。

那么现在问题出现在相等性上,这两个对象相等意味着什么。因为我们可以从各方面都相同的对象 A 和 B 开始,它们将相同的数据加载到内存中并且它们在磁盘上具有相同的数据。但是在对 A 和 B 调用一系列函数之后,它们现在可能不同了。 A 和 B 在磁盘上仍然有相同的数据,但它们将不同的数据加载到内存中。所以问题是 A == B 应该解析为 true 还是 false?

是否有一套规则或准则来定义其运作方式?或者这只是我决定什么对程序最有意义并记录“==”的作用的情况?

最佳答案

任何 operator== 重载都应该遵守 equivalence relation 的公理, 即

  • x == x,对于所有对象 x
  • 如果 x == y,则 y == x
  • 如果 x == yy == z,则 x == z

许多使用 == 的算法都依赖于它实现等价关系,在 §17.6.3.1 中形式化为 EqualityComparable 概念。

关于c++ - 平等的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13981635/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com