定义一个复数类Complex,其数据成员为复数的实部和虚部,重载运算符“+”,实现两个复数间的加法运算。要求:将运算符函数重载为非成员、非友元的普通函数。编写一个完整的程序,测试重载的正确性。
时间: 2024-11-13 11:39:23 浏览: 0
定义一个名为complex 的复数类,其属性数据为复数的实部和虚部,要求构造函数和拷贝构造函数,并能打印复数的值
5星 · 资源好评率100%
首先,我们来定义一个名为`Complex`的结构体或类,它包含两个数据成员:`real`表示实部,`imaginary`表示虚部。在这个例子中,我们将使用C++语法,因为它是支持静态成员函数的。
```cpp
#include <iostream>
// 定义复数类 Complex
struct Complex {
double real;
double imaginary;
};
// 非成员、非友元的加法运算符重载函数
Complex operator+(const Complex& c1, const Complex& c2) {
Complex result;
result.real = c1.real + c2.real;
result.imaginary = c1.imaginary + c2.imaginary;
return result;
}
int main() {
// 创建两个复数对象
Complex num1{3.0, 4.0};
Complex num2{1.0, -2.0};
// 使用自定义的加法运算符
Complex sum = num1 + num2;
// 输出结果
std::cout << "Sum of complex numbers: (" << sum.real << ", " << sum.imaginary << ")\n";
// 测试其他复杂数值的加法
Complex num3{2.5, 1.5};
Complex num4{-0.5, 0.75};
Complex combined_sum = num1 + num3 + num4;
std::cout << "Combined sum: (" << combined_sum.real << ", " << combined_sum.imaginary << ")\n";
return 0;
}
```
在上述代码中,我们定义了一个静态成员函数`operator+`,用于计算两个复数的和,并返回一个新的`Complex`对象。在`main`函数中,我们创建了两个复数对象并使用自定义的`+`操作符进行了加法运算,并展示了结果。
阅读全文