c++ - 使用运算符重载表格

标签 c++ oop operator-overloading

我想在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/

相关文章:

c++ - 队列给出错误数据

ruby - 从 Array 继承时获取#with_index

c++ - 如何让我的重载分数 >> 运算符识别负数。

c++ - 重载运算符 C++,复数?

c++ - 在进行基准测试时防止编译器优化

c++ - 如何找出哪个派生类正在处理

java - 访问Java中多个类之间的变量

c++ - 重载 += 运算符作为友元函数

c++ - 顶点着色器的 OpenGL 属性名称

javascript OOP 不工作 : Uncaught TypeError: object is not a function