C++ 运算符重载:定义自定义数据类型的行为
在 C++ 中,可以使用运算符重载来为自定义的数据类型定义特定的行为。运算符重载允许对操作符进行重新定义,使其适用于自定义类的对象。
在 C++ 中,可以重载的运算符包括算术运算符(+、-、、/、%)、关系运算符(<、>、<=、>=、==、!=)、赋值运算符(=)、位运算符(&、|、^、~、<<、>>)、递增/递减运算符(++、--)、下标运算符([])、函数调用运算符(())、成员访问运算符(->)、解引用运算符()等。
运算符重载的一般语法如下:
返回类型 operator 运算符 (参数列表) {
// 运算符重载的实现
}
需要注意的是,运算符重载函数可以作为类的成员函数或非成员函数来定义。当作为成员函数定义时,左操作数为调用对象;当作为非成员函数定义时,左操作数为第一个参数。
下面是一个例子,演示如何重载加法运算符:
#include<iostream>
using namespace std;
class Complex {
private:
int real;
int imag;
public:
Complex(int r = 0, int i = 0) : real(r), imag(i) {}
Complex operator+(const Complex& c) {
Complex res;
res.real = real + c.real;
res.imag = imag + c.imag;
return res;
}
void display() {
cout << real << ' + ' << imag << 'i' << endl;
}
};
int main() {
Complex c1(3, 4);
Complex c2(2, 6);
Complex c3 = c1 + c2;
c3.display();
return 0;
}
输出结果为:
5 + 10i
在上面的例子中,我们为 Complex 类重载了加法运算符 +,使其能够对 Complex 对象进行相加操作。重载函数 operator+ 被定义为类的成员函数,并接受一个 const Complex& 类型的参数,表示右操作数。在函数体内,我们将两个 Complex 对象的实部和虚部分别相加,并返回一个新的 Complex 对象。
运行程序时,我们实例化了两个 Complex 对象 c1 和 c2,并将它们相加赋值给 c3。然后调用 c3 的 display 函数输出结果。可以看到,c3 的实部为 5,虚部为 10,符合我们的预期。
通过运算符重载,我们可以方便地实现对自定义类的对象进行各种运算操作,使代码更加简洁和易读。
原文地址: https://www.cveoy.top/t/topic/pTLx 著作权归作者所有。请勿转载和采集!