在 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,符合我们的预期。

通过运算符重载,我们可以方便地实现对自定义类的对象进行各种运算操作,使代码更加简洁和易读。

C++ 运算符重载:定义自定义数据类型的行为

原文地址: https://www.cveoy.top/t/topic/pTLx 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录