请编写函数实现并测试运算符重载的方法。 要求: 1、将运算符重载为成员函数,实现复数加实数、复数减实数的功能; 2、将运算符重载为非成员函数,实现实数加复数、实数减法复数的功能; 3、验证上述函数功能的正确性
时间: 2024-05-14 21:15:21 浏览: 36
运算符重载实例.
好的,我会给您提供一个运算符重载的示例代码,同时给出测试代码来验证其正确性。代码如下:
```cpp
#include <iostream>
class Complex {
private:
double real;
double imag;
public:
Complex(double r, double i) : real(r), imag(i) {}
Complex operator+(double r) {
return Complex(real + r, imag);
}
Complex operator-(double r) {
return Complex(real - r, imag);
}
friend Complex operator+(double r, const Complex& c) {
return Complex(c.real + r, c.imag);
}
friend Complex operator-(double r, const Complex& c) {
return Complex(r - c.real, -c.imag);
}
void display() {
std::cout << real << " + " << imag << "i" << std::endl;
}
};
int main() {
Complex c(1, 2);
Complex res1 = c + 3;
Complex res2 = c - 2;
Complex res3 = 4 + c;
Complex res4 = 5 - c;
res1.display(); // 4 + 2i
res2.display(); // -1 + 2i
res3.display(); // 5 + 2i
res4.display(); // 4 + -3i
return 0;
}
```
运算符重载的方法分为成员函数和非成员函数,根据题目要求,我们实现了两种类型的运算符重载。
首先是成员函数,实现了复数加实数、复数减实数的功能,分别重载了 `+` 和 `-` 运算符。这两个运算符只需要改变实部的值即可。
其次是非成员函数,实现了实数加复数、实数减法复数的功能,分别重载了 `+` 和 `-` 运算符。这两个运算符需要同时改变实部和虚部的值,需要通过 `friend` 关键字来访问私有成员。
最后,我们在 `main` 函数中测试了这些运算符是否正常工作,输出结果也证明了它们的正确性。
阅读全文