使用一个运算符的重载来重载另一个运算符是一种好习惯吗?

Is using the overloading of one operator to overload another a good practice?

我最近发现了 C++ 的奇妙功能,允许程序员在他们创建的 class 上 重载 操作。作为探索这个话题的一种方式,我决定尝试制作自己的 vector class。

作为满足我的好奇心的小测试,我最近做了以下操作来重载我的 class 的相等运算符:

 95 bool Vect::operator==(const Vect& rhs){
 96     return this->getCoord() == rhs.getCoord()
 98 }
 99 
100 bool Vect::operator!=(const Vect& rhs){
101     return !(*this == rhs);
102 }

这可以正确编译和工作。但是,我对这是否是 good/bad 做法有疑问(以及为什么!)。如果它不好,我不想养成这样做的习惯,或者如果它好,我会鼓励自己继续使用它。

运算符重载没有什么不好的,这是一种很好的做法。

Operator overloading 帮助您编写简洁易懂的代码,并简化编辑过程。

PS:正如您所说,您最近遇到了operator overloadingthis可能有助于您了解它的一些规则和限制。

编辑: 使用重载运算符来重载其他运算符是可以的。但是它进行了两次函数调用而不是一次,考虑到性能,这是不可取的。不过影响不大。