定义一个复数类Complex,重载运算符“+",使之能用于复数的加法运算。将运算 符函数重载为非成员、非友元的普通函数。编写程序,求两个复数之和。 使用基础C++
时间: 2024-12-04 11:27:23 浏览: 7
复数类加减法运算符重载成员函数
5星 · 资源好评率100%
在C++中,我们可以创建一个名为`Complex`的类来表示复数,然后通过模板函数的方式来重载加法运算符`+`,使其既不是成员函数也不是友元函数。以下是基本的实现:
```cpp
#include <iostream>
class Complex {
public:
double real;
double imag;
// 构造函数
Complex(double r = 0, double i = 0) : real(r), imag(i) {}
// 打印复数
void print() const {
std::cout << real << " + " << imag << "i" << std::endl;
}
};
// 使用template函数重载加法运算符
template<typename T>
T add(T a, T b) {
return a + b;
}
// 对复数进行加法运算
Complex operator+(const Complex& c1, const Complex& c2) {
Complex result(c1.real + c2.real, c1.imag + c2.imag);
return result;
}
int main() {
Complex c1(2, 3);
Complex c2(4, 5);
// 输出复数c1
c1.print();
// 输出复数c2
c2.print();
// 计算复数之和
Complex sum = add(c1, c2); // 这里实际上会调用上面的operator+
sum.print(); // 输出结果
return 0;
}
```
在这个例子中,我们首先定义了一个`Complex`类,接着声明了两个复数`c1`和`c2`。然后,我们使用模板函数`add`对任意类型的对象进行加法操作,对于`Complex`类型的对象,实际上是通过`operator+`实现的。在`main`函数中,我们计算了两个复数的和,并打印出来。
阅读全文