以c++为例,给出复数一个完整的抽象数据结构类型的定义,表示和实现
时间: 2024-09-06 21:02:30 浏览: 55
抽象数据类型(三元组ADT、复数四则运算)
在C++中,复数可以用一个类来表示,这个类将封装实部和虚部两个成员变量,并提供构造函数、访问函数、赋值操作符重载以及算术运算符重载等接口。以下是一个简单的复数类的定义和实现示例:
```cpp
#include <iostream>
using namespace std;
class Complex {
private:
double real; // 实部
double imag; // 虚部
public:
// 构造函数
Complex(double r = 0.0, double i = 0.0) : real(r), imag(i) {}
// 访问函数
double getReal() const { return real; }
double getImag() const { return imag; }
// 设置实部和虚部的值
void setReal(double r) { real = r; }
void setImag(double i) { imag = i; }
// 复数加法运算符重载
Complex operator+(const Complex& other) const {
return Complex(real + other.real, imag + other.imag);
}
// 复数减法运算符重载
Complex operator-(const Complex& other) const {
return Complex(real - other.real, imag - other.imag);
}
// 复数乘法运算符重载
Complex operator*(const Complex& other) const {
return Complex(real * other.real - imag * other.imag,
real * other.imag + imag * other.real);
}
// 复数除法运算符重载
Complex operator/(const Complex& other) const {
double denominator = other.real * other.real + other.imag * other.imag;
return Complex((real * other.real + imag * other.imag) / denominator,
(imag * other.real - real * other.imag) / denominator);
}
// 输出复数
void print() const {
cout << "(" << real << ", " << imag << ")" << endl;
}
};
int main() {
Complex c1(1.0, 2.0), c2(2.0, 3.0), c3;
c3 = c1 + c2;
c3.print(); // 输出: (3, 5)
c3 = c1 - c2;
c3.print(); // 输出: (-1, -1)
c3 = c1 * c2;
c3.print(); // 输出: (-4, 7)
c3 = c1 / c2;
c3.print(); // 输出: (0.44, 0.08)
return 0;
}
```
上述代码展示了如何定义一个复数的类,包括构造函数、访问函数以及基本的算术运算符重载。此外,还包含了一个简单的测试程序,演示了如何创建复数对象、执行运算和输出结果。
阅读全文