定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。将运算符函数重载为非成员、非友元的普通函数。编程序,求两个复数之和。
时间: 2024-10-21 09:13:27 浏览: 64
新建 WinRAR 压缩文件_运算符重载_
首先,我们可以在C++中定义一个名为`Complex`的类,它包含两个私有成员变量表示实部(real)和虚部(imaginary),并提供公有的构造函数、赋值操作符以及重载的`+`运算符。由于题目要求是非成员非友元函数,我们将创建一个全局函数来处理复数的加法。
```cpp
#include <iostream>
class Complex {
private:
double real;
double imaginary;
public:
// 构造函数
Complex(double r = 0.0, double i = 0.0) : real(r), imaginary(i) {}
// 赋值操作符
Complex& operator=(const Complex& other) {
if (this != &other) {
real = other.real;
imaginary = other.imaginary;
}
return *this;
}
// 重载+运算符为非成员函数
friend Complex add(Complex a, Complex b);
};
// 加法运算符函数,接受两个Complex类型的参数
Complex add(Complex a, Complex b) {
Complex sum;
sum.real = a.real + b.real;
sum.imaginary = a.imaginary + b.imaginary;
return sum;
}
int main() {
Complex c1(1.0, 2.0); // 复数1
Complex c2(3.0, 4.0); // 复数2
Complex result = add(c1, c2); // 计算两数之和
std::cout << "Sum of complex numbers is: (" << result.real << ", " << result.imaginary << ")\n";
return 0;
}
```
在这个例子中,我们在`main()`函数中创建了两个复数,并通过`add`函数计算它们的和。`add`函数作为外部函数,不是`Complex`类的成员也不是友元,因此实现了非成员非友元的复数加法。
阅读全文