请编写函数实现并测试运算符重载的方法。 要求: 1、将运算符重载为成员函数,实现复数加实数、复数减实数的功能; 2、将运算符重载为非成员函数,实现实数加复数、实数减法复数的功能; 3、验证上述函数功能的正确性。
时间: 2024-05-16 13:12:25 浏览: 70
实验五、运算符重载 复数+-*/ 大数+-*/
好的,我会为您编写一份示例代码来实现运算符重载的功能。
```
#include <iostream>
using namespace std;
class Complex {
private:
double real;
double imag;
public:
Complex(double r = 0, double i = 0) : real(r), imag(i) {}
// 成员函数实现复数加实数
Complex operator+(double a) {
return Complex(real + a, imag);
}
// 成员函数实现复数减实数
Complex operator-(double a) {
return Complex(real - a, imag);
}
// 非成员函数实现实数加复数
friend Complex operator+(double a, Complex c) {
return Complex(a + c.real, c.imag);
}
// 非成员函数实现实数减法复数
friend Complex operator-(double a, Complex c) {
return Complex(a - c.real, -c.imag);
}
// 打印复数的值
void display() {
cout << real << " + " << imag << "i" << endl;
}
};
int main() {
Complex c1(1, 2);
Complex c2;
// 使用成员函数实现复数加实数
c2 = c1 + 3.0;
c2.display();
// 使用成员函数实现复数减实数
c2 = c1 - 1.0;
c2.display();
// 使用非成员函数实现实数加复数
c2 = 4.0 + c1;
c2.display();
// 使用非成员函数实现实数减法复数
c2 = 5.0 - c1;
c2.display();
return 0;
}
```
在上述代码中,我们定义了一个 `Complex` 类来表示复数,并实现了成员函数和非成员函数的运算符重载。
我们通过成员函数实现了复数加实数和复数减实数的功能,通过非成员函数实现了实数加复数和实数减法复数的功能。
最后,我们在 `main` 函数中测试了运算符重载的正确性。可以看到,运算符重载的效果与预期一致。
希望这份示例代码能够帮助您实现运算符重载的功能。
阅读全文