【发布时间】:2015-12-25 07:58:27
【问题描述】:
假设我正在编写一个 int 包装器,并且需要提供每个运算符重载。作者必须列出每一个,还是可以根据作者提供的内容自动生成任何一个?编译器可以/是否从现有的运算符中推断出任何新的自动定义运算符?
如果我定义operator==,它会自动给我一个operator!=吗?反之亦然?
如果我定义operator++(),我是否可以免费获得operator++(int)?还是反过来?
+= 类型的业务怎么样?是否可以将operator+ 的现有定义与operator= 结合起来生成operator+=?理论上应该是可以的,但真的可以吗?
>= 到 < 等的相同问题,还是我必须完整列出 >、>、>=、<= 的定义?
【问题讨论】:
-
这很容易测试。
-
boost 有一些基于其他运算符的运算符:boost.org/doc/libs/1_59_0/libs/utility/operators.htm
-
@user657267:谢谢,这个提议很有道理。我希望
operator++()到operator++(int)也有一个,我觉得你应该只需要提供其中一个。
标签: c++ operator-overloading compiler-generated