📅  最后修改于: 2023-12-03 15:29:52.075000             🧑  作者: Mango
在 C++ 中,我们可以对运算符进行重载,使其能够作用于自定义类型的对象。通过运算符重载,我们可以改变默认的运算符操作方式,使其适应于自定义类型的需求。
运算符重载的语法如下:
返回类型 operator 运算符(参数列表){
//函数体
}
其中,operator 表示需要重载的运算符,返回类型可以是任意类型,参数列表可以为空或包含一个或多个参数。
下面是一个简单的示例,演示了如何重载加法运算符:
#include <iostream>
using namespace std;
class Complex {
private:
int real, imag;
public:
Complex(int r = 0, int i =0) {
real = r;
imag = i;
}
Complex operator + (Complex const &obj) { // + 运算符重载
Complex res;
res.real = real + obj.real;
res.imag = imag + obj.imag;
return res;
}
void print() {
cout << real << " + i" << imag << endl;
}
};
int main() {
Complex c1(2,3), c2(3,4);
Complex c3 = c1 + c2; // 调用运算符重载函数
c3.print();
return 0;
}
现在,假设你需要比较两个自定义类型的对象是否相等,你需要怎么做呢?
对于自定义类型,我们需要重载等号运算符来实现对象之间的比较。下面是一个简单的示例,演示了如何重载等号运算符:
#include <iostream>
using namespace std;
class Complex {
private:
int real, imag;
public:
Complex(int r = 0, int i =0) {
real = r;
imag = i;
}
bool operator == (Complex const &obj) { // == 运算符重载
return (real == obj.real) && (imag == obj.imag);
}
};
int main() {
Complex c1(2,3), c2(3,4);
if (c1 == c2) {
cout << "c1 is equal to c2" << endl;
} else {
cout << "c1 is not equal to c2" << endl;
}
return 0;
}
在上面的代码中,我们为 Complex 类型重载了等号运算符。在 main 函数中,我们使用了刚刚重载的等号运算符来比较两个 Complex 对象是否相等。
运算符重载是 C++ 中必不可少的面向对象编程技术之一。通过运算符重载,我们可以更方便地对自定义类型进行操作,使得代码更加简洁和易读。
当我们需要比较自定义类型的对象是否相等时,需要为该类型重载等号运算符,以便在程序中使用更加方便和简单。