我想澄清 C++ 标准,特别是它在第 20.1.3 节中说(我的解释)“对于类 T 和类 T 的一个实例 x,T(x) 必须等同于 x”让类(class)使用标准容器。
我找不到“等效”的定义。这是否意味着我必须将 operator==
定义为我的类的成员,以便 T(x) == x
返回 true?
最佳答案
等效是有意含糊的。 (为避免暗示 operator==
必须 之类的事情;一般情况下不需要。)
但是,如果两个事物的数据表示相同的对象,那么从概念上讲,这两个事物是等价的。如果一个类的数据在“复制”时可能不同,那么您确实需要制作一个 operator==
(可能还有 operator<
和 rel_ops
)以确保“等效”的实现。 (实际上,确保可变数据不是“类的一部分”,可以这么说。)
通常最好不要走这样的路,因为你最终不得不修补很多东西以确保它正常工作。如果要复制某些东西,就让 if 被完全复制。这更有意义。
关于c++ - 我是否需要定义 `operator==` 才能将我的类与标准容器一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3278600/