用c++分别采用成员函数和友元函数重载实现复数的加法运算。
时间: 2024-03-07 12:47:03 浏览: 113
C++运算符重载 成员函数与友元函数详解
5星 · 资源好评率100%
好的,下面是用成员函数和友元函数重载实现复数加法的示例代码:
```C++
#include <iostream>
using namespace std;
class Complex {
private:
double real;
double imag;
public:
Complex(double real = 0, double imag = 0) {
this->real = real;
this->imag = imag;
}
Complex operator+(const Complex& c) const {
Complex res;
res.real = this->real + c.real;
res.imag = this->imag + c.imag;
return res;
}
void display() {
cout << "(" << real << ", " << imag << ")" << endl;
}
friend Complex operator+(double r, const Complex& c);
};
Complex operator+(double r, const Complex& c) {
Complex res;
res.real = r + c.real;
res.imag = c.imag;
return res;
}
int main() {
Complex a(2, 3);
Complex b(3, 4);
Complex c = a + b;
c.display();
Complex d = 2 + b;
d.display();
return 0;
}
```
上面的代码实现了一个复数类 `Complex`,其中重载了 `+` 运算符,用于实现复数的加法运算。同时,代码中用了两种不同的实现方式,一种是用成员函数重载 `+` 运算符,另一种是用友元函数重载 `+` 运算符。其中,成员函数重载的代码如下:
```C++
Complex operator+(const Complex& c) const {
Complex res;
res.real = this->real + c.real;
res.imag = this->imag + c.imag;
return res;
}
```
这个函数的作用是将当前的复数对象和另一个复数对象相加,返回一个新的复数对象,实现了复数的加法运算。而友元函数重载的代码如下:
```C++
friend Complex operator+(double r, const Complex& c);
```
这个函数的作用是将一个实数和一个复数对象相加,返回一个新的复数对象,实现了复数的加法运算。需要注意的是,这个函数是一个友元函数,因此可以直接访问 `Complex` 类的私有成员变量。
最后,在 `main` 函数中,我们创建了两个复数对象 `a` 和 `b`,并将它们相加得到一个新的复数对象 `c`,然后将 `c` 输出。接着,我们创建了一个实数 `2`,并将它和复数对象 `b` 相加得到一个新的复数对象 `d`,然后将 `d` 输出。
阅读全文