我想在C++中了解以下类似的运算符重载形式:
ClassName & operator+(ClassName &other)
ClassName operator+(ClassName &other)
Classname operator+(const ClassName &other)
Classname operator+(const Classname other)
Classname operator+(Classname other)
用法有什么区别?
最佳答案
第一个返回一个引用,并获得一个引用-这意味着理论上您可以更改两个参数,然后返回一个引用,也可以更改该引用。这通常不是您想要执行的操作(2 + 3不会返回可以重新分配给17的5)。
第二个是相同的,但没有引用返回。
第三是const reference-不能修改的引用。这通常是您要执行的操作,因为您可以快速获取元素(获取元素),但是无法更改(偶然或不更改)。
第四个就像第三个一样,但是您出于某种原因复制了一个参数并将其设为const。这毫无意义。
最后一个只是复制一份。
它们之间并没有太大的区别-如果考虑operator+
要做些什么,那么其中的一些就没有多大意义了。它们不同的地方主要是您如何获取参数-而且在大多数情况下,您希望快速获取参数,因此const ClassName& other
可能是最好的选择。
关于c++ - 使用运算符重载表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34283119/