使用友元函数重载运算符进行复数的运算
时间: 2024-05-01 12:18:55 浏览: 121
好的,这是一个关于复数运算的问题。复数可以用实部和虚部表示,我们可以使用 C++ 中的类来表示复数。在类的定义中,我们可以使用友元函数来重载运算符,使得我们可以对复数进行加减乘除等运算。下面是一个复数类的示例代码,其中包含了加、减、乘、除等运算符的重载:
```c++
#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+(const Complex& c) const {
return Complex(real + c.real, imag + c.imag);
}
Complex operator-(const Complex& c) const {
return Complex(real - c.real, imag - c.imag);
}
Complex operator*(const Complex& c) const {
return Complex(real * c.real - imag * c.imag, imag * c.real + real * c.imag);
}
Complex operator/(const Complex& c) const {
double denominator = c.real * c.real + c.imag * c.imag;
return Complex((real * c.real + imag * c.imag) / denominator, (imag * c.real - real * c.imag) / denominator);
}
friend ostream& operator<<(ostream& os, const Complex& c) {
os << c.real << "+" << c.imag << "i";
return os;
}
};
int main() {
Complex c1(1, 2);
Complex c2(3, 4);
cout << "c1 = " << c1 << endl;
cout << "c2 = " << c2 << endl;
cout << "c1 + c2 = " << c1 + c2 << endl;
cout << "c1 - c2 = " << c1 - c2 << endl;
cout << "c1 * c2 = " << c1 * c2 << endl;
cout << "c1 / c2 = " << c1 / c2 << endl;
return 0;
}
```
在上面的代码中,我们定义了一个 Complex 类来表示复数,其中包含了实部和虚部两个私有成员变量。我们使用了构造函数来初始化这两个变量。在类的定义中,我们重载了加、减、乘、除等运算符,使得我们可以对复数进行这些运算。此外,我们还使用了一个友元函数来重载流运算符,使得我们可以方便地输出复数的值。在主函数中,我们创建了两个复数对象,然后对它们进行了加、减、乘、除等运算,最后输出结果。
阅读全文