清华大学数据结构详解:C++复数类设计与实现

需积分: 9 11 下载量 110 浏览量 更新于2025-01-29 收藏 55KB DOC 举报
在清华大学的数据结构课程中,抽象数据类型(Abstract Data Type, ADT)是一个关键概念,它允许程序员以一种更高级别的接口来描述数据结构,而不涉及具体的底层实现细节。在这里,一个关于复数的抽象数据类型被作为实例来讲解。 复数ADT是一种特殊的类,用于表示具有实部和虚部的数学对象。在C++中,设计这个类的关键在于定义构造函数、成员函数和友元函数,以满足题目所要求的功能: 1. **构造函数**: - **缺省构造函数**: `complex()`:创建一个复数对象,实部和虚部默认为0。 - **带有单参数的构造函数**: `complex(double r)`:接受一个双精度浮点数r,将实部设置为该值,虚部置为0。 - **带有两个参数的构造函数**: `complex(double r, double i)`:接受两个参数,分别设置实部和虚部。 2. **成员函数**: - `double getReal()` 和 `double getImag()`:用于获取复数的实部和虚部。 - `void setReal(double r)` 和 `void setImag(double i)`:用于修改复数的实部和虚部。 - `complex& operator=(complex& ob)`:重载赋值操作符,用于复制一个复数对象的值。 3. **运算符重载**: - `complex& operator+(complex& ob)`:实现了加法运算,返回一个新的复数,其值等于当前复数加上另一个复数。 - `complex& operator-(complex& ob)`:减法运算,返回一个新的复数,其值等于当前复数减去另一个复数。 - `complex& operator*(complex& ob)`:乘法运算,返回一个新的复数,其值等于当前复数与另一个复数相乘。 - `complex& operator/(complex& ob)`:除法运算,返回一个新的复数,其值等于当前复数除以另一个复数。 4. **友元函数**: - `friend ostream& operator<<(ostream& os, complex& c)`:这是一个友元函数,使得可以将复数对象通过`<<`操作符输出到标准输出流,如`cout`,便于调试和显示。 这些构造函数和成员函数共同构成了复数ADT的接口,使得用户可以通过这些函数创建、操作和展示复数对象,而无需关心底层实现的细节。在实际编程中,这种封装性有助于代码的模块化和可维护性,提高了编程效率和代码质量。