定义一个复数类,用友元函数实现对双目运算符“+”的运算符重载,使其 适用于复数运算。
时间: 2023-09-07 21:04:16 浏览: 257
类域 友元 运算符 重载
### 回答1:
复数类的定义如下:class Complex {public:double real; double imag;Complex(double real, double imag);Complex operator+(const Complex &c2) const;Complex operator-(const Complex &c2) const;Complex operator*(const Complex &c2) const;Complex operator/(const Complex &c2) const;};友元函数实现对双目运算符“ ”的运算符重载:friend Complex operator+(const Complex &c1, const Complex &c2);friend Complex operator-(const Complex &c1, const Complex &c2);friend Complex operator*(const Complex &c1, const Complex &c2);friend Complex operator/(const Complex &c1, const Complex &c2);
### 回答2:
复数类的定义如下:
```cpp
class Complex {
private:
double real; // 实部
double imag; // 虚部
public:
Complex(double r = 0.0, double i = 0.0) {
real = r;
imag = i;
}
// 友元函数重载双目运算符"+"
friend Complex operator+(const Complex& c1, const Complex& c2);
void display() {
cout << real << " + " << imag << "i" << endl;
}
};
```
友元函数重载双目运算符"+",实现对复数的加法运算:
```cpp
Complex operator+(const Complex& c1, const Complex& c2) {
Complex tmp;
tmp.real = c1.real + c2.real;
tmp.imag = c1.imag + c2.imag;
return tmp;
}
```
使用该重载的运算符可以实现复数的加法运算。例如:
```cpp
int main() {
Complex c1(1.0, 2.0);
Complex c2(2.0, 3.0);
Complex c3 = c1 + c2; // 使用重载的"+"运算符进行加法运算
cout << "c1 = ";
c1.display(); // 输出:1 + 2i
cout << "c2 = ";
c2.display(); // 输出:2 + 3i
cout << "c3 = ";
c3.display(); // 输出:3 + 5i
return 0;
}
```
上述代码中,定义了一个复数类Complex,其中包含实部和虚部,并实现了一个友元函数operator+来重载双目运算符"+",使其适用于复数的加法运算。在主函数中,创建两个复数对象c1和c2,并使用重载的运算符对它们进行加法运算,将结果赋给c3,最后输出三个复数对象的值。
### 回答3:
复数是由实部和虚部组成的数,可以表示为a + bi,其中a是实部,b是虚部,i是虚数单位。下面是一个定 义复数类的例子,并用友元函数实现对双目运算符“+”进行运算符重载,使其适用于复数运算。
```cpp
#include <iostream>
using namespace std;
class Complex {
private:
double real;
double imaginary;
public:
Complex(double r = 0.0, double i = 0.0) {
real = r;
imaginary = i;
}
friend Complex operator+(const Complex& c1, const Complex& c2) {
Complex sum;
sum.real = c1.real + c2.real;
sum.imaginary = c1.imaginary + c2.imaginary;
return sum;
}
void display() {
cout << real << " + " << imaginary << "i" << endl;
}
};
int main() {
Complex c1(2.0, 3.0);
Complex c2(4.0, 5.0);
Complex c3 = c1 + c2;
c3.display();
return 0;
}
```
在上述代码中,我们定义了一个Complex类,包含了两个私有成员变量real和imaginary,表示复数的实部和虚部。我们还定义了一个构造函数,用于初始化这两个成员变量。
在类中,我们通过friend关键字声明了一个友元函数operator+,该函数接受两个Complex对象作为参数,并返回一个新的Complex对象,表示两个复数相加的结果。在函数中,我们通过访问类的私有成员变量完成了对复数的相加运算。
在主函数中,我们创建了两个Complex对象c1和c2,并将它们相加得到一个新的Complex对象c3。然后,我们调用c3的display函数输出运算结果。运行这段代码,将会输出结果"6 + 8i",表示两个复数相加的结果。
阅读全文