使用一个运算符的重载来重载另一个运算符是一种好习惯吗?
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 overloading
,this可能有助于您了解它的一些规则和限制。
编辑: 使用重载运算符来重载其他运算符是可以的。但是它进行了两次函数调用而不是一次,考虑到性能,这是不可取的。不过影响不大。
我最近发现了 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 overloading
,this可能有助于您了解它的一些规则和限制。
编辑: 使用重载运算符来重载其他运算符是可以的。但是它进行了两次函数调用而不是一次,考虑到性能,这是不可取的。不过影响不大。