c++运算符重载怎么理解
时间: 2023-07-23 20:44:12 浏览: 99
C++运算符重载是一种特殊的函数重载,它允许我们自定义类的操作符行为,使得对象可以像内置类型一样进行运算,例如加减乘除等运算。运算符重载的语法形式如下:
```
返回类型 operator 运算符符号(形参列表) {
// 函数体
}
```
其中,`operator`是关键字,后面跟上要重载的运算符符号,形参列表可以为空或者包含任意数量的参数。重载运算符时,我们需要将其定义为类的成员函数或全局函数,具体视运算符的特性而定。
例如,我们可以定义一个名为`Complex`的类,实现复数的加法和减法运算符重载。其代码示例如下:
```c++
#include <iostream>
class Complex {
public:
Complex(double real = 0.0, double imag = 0.0) : m_real(real), m_imag(imag) {}
Complex operator+(const Complex& other) const {
return Complex(m_real + other.m_real, m_imag + other.m_imag);
}
Complex operator-(const Complex& other) const {
return Complex(m_real - other.m_real, m_imag - other.m_imag);
}
void print() const {
std::cout << m_real << "+" << m_imag << "i" << std::endl;
}
private:
double m_real;
double m_imag;
};
int main() {
Complex c1(1, 2);
Complex c2(3, 4);
Complex c3 = c1 + c2;
c3.print(); // 输出:4+6i
Complex c4 = c2 - c1;
c4.print(); // 输出:2+2i
return 0;
}
```
在上面的示例中,我们定义了一个名为`Complex`的类,其中包含实部和虚部两个私有数据成员。我们重载了加法运算符和减法运算符,使得两个`Complex`对象可以通过`+`和`-`进行运算。我们定义了两个成员函数`operator+`和`operator-`,它们分别重载了加法和减法运算符。这两个函数的返回类型都是`Complex`,并且都是常量成员函数,因为它们不会修改类的数据成员。我们还定义了一个成员函数`print`,用于打印复数对象的实部和虚部。在`main`函数中,我们创建了两个`Complex`对象`c1`和`c2`,并分别对它们进行加法和减法运算,得到了结果`c3`和`c4`。最后,我们分别输出了这两个结果对象的实部和虚部。
通过运算符重载,我们可以使得对象的运算行为更加符合直觉,使得代码更加易读易懂。同时,运算符重载也为我们提供了一种自定义类型的运算方式的途径。
阅读全文