C++中编写一个复数类的例子,重载 +、 - 、= 运算符,进而实现复数加、减、赋值运算;
时间: 2023-06-12 08:04:29 浏览: 115
下面是一个简单的复数类的例子,其中重载了加、减、赋值运算符:
```c
#include <stdio.h>
typedef struct {
double real;
double imag;
} complex;
complex add(complex a, complex b) {
complex c;
c.real = a.real + b.real;
c.imag = a.imag + b.imag;
return c;
}
complex sub(complex a, complex b) {
complex c;
c.real = a.real - b.real;
c.imag = a.imag - b.imag;
return c;
}
void print_complex(complex c) {
if (c.imag < 0) {
printf("%.2f - %.2fi\n", c.real, -c.imag);
} else {
printf("%.2f + %.2fi\n", c.real, c.imag);
}
}
complex operator_add(complex a, complex b) {
return add(a, b);
}
complex operator_sub(complex a, complex b) {
return sub(a, b);
}
void operator_eq(complex *a, complex b) {
a->real = b.real;
a->imag = b.imag;
}
int main() {
complex a = {1.0, 2.0};
complex b = {3.0, 4.0};
complex c;
c = operator_add(a, b);
printf("a + b = ");
print_complex(c);
c = operator_sub(a, b);
printf("a - b = ");
print_complex(c);
operator_eq(&a, b);
printf("a = ");
print_complex(a);
return 0;
}
```
在上面的代码中,我们定义了一个结构体 `complex` 表示复数,其中包含两个成员变量 `real` 和 `imag` 表示实部和虚部。
我们首先定义了两个函数 `add` 和 `sub` 分别实现复数的加法和减法。然后我们定义了一个函数 `print_complex` 用于打印复数。
接着我们使用 `operator_add` 和 `operator_sub` 分别重载了加法和减法运算符,使得我们可以像普通的数值类型一样使用加法和减法运算符对复数进行运算。最后我们还重载了赋值运算符 `operator_eq`,使得我们可以像普通类型一样使用赋值运算符将一个复数赋值给另一个复数。
在 `main` 函数中,我们声明了两个复数 `a` 和 `b`,并对其进行加、减、赋值运算,并打印出结果。
阅读全文