讲解一下C++自定义类重载操作符
时间: 2023-10-09 09:13:52 浏览: 66
在C++中,可以通过重载运算符来实现自定义类的行为。C语言中也可以使用这种方法,但需要借助函数指针。在C语言中,运算符被定义为函数,可以使用函数指针来实现运算符重载。
以重载"+"运算符为例,假设我们有一个自定义的复数类Complex,可以定义一个名为Complex_add的函数,用于实现复数相加的运算:
```
typedef struct {
double real;
double imag;
} Complex;
Complex Complex_add(Complex a, Complex b) {
Complex c;
c.real = a.real + b.real;
c.imag = a.imag + b.imag;
return c;
}
```
然后,我们可以定义一个名为operator+的函数,用于重载"+"运算符:
```
Complex operator+(Complex a, Complex b) {
return Complex_add(a, b);
}
```
这里的operator+函数返回一个Complex类型的值,实现了"+"运算符的功能。我们可以通过以下方式使用此运算符:
```
Complex a = {1.0, 2.0};
Complex b = {3.0, 4.0};
Complex c = a + b;
```
这样,c的值将为{4.0, 6.0},即a和b的复数相加的结果。
同样的方法,也可以重载其他运算符,例如"-"、"*"、"/"等等。需要注意的是,不是所有运算符都可以重载,例如"."和"sizeof"等运算符无法重载。