C++编程:抽象类与接口实现

需积分: 47 17 下载量 178 浏览量 更新于2024-09-18 收藏 3KB TXT 举报
"C++编程中的抽象类继承与接口实现" 在C++编程中,抽象类是一种特殊的类,它不能被实例化,但可以被其他类继承。抽象类的主要作用是定义一个接口,即规定子类必须实现的一组方法。在这个例子中,我们看到一个名为`UniversityObject`的抽象类,它包含一个虚函数`getSummary()`。虚函数使得子类能够重写这个函数,提供各自特定的实现。 `Student`、`Lecture`和`Module`三个类都继承自`UniversityObject`,这意味着它们都必须提供`getSummary()`函数的实现。这种设计模式通常用于表示具有共同属性和行为的不同对象,比如学生、讲座和模块都是大学环境中的实体,它们都有自己的摘要信息。 - `Student`类:表示一个学生,包含两个私有成员变量`name`(姓名)和`register_str`(注册号)。`Student`类有两个构造函数,一个无参构造函数(默认)和一个带参数的构造函数,用于初始化学生的姓名和注册号。`getSummary()`函数返回一个字符串,包含学生的注册号和姓名。 - `Lecture`类:代表一个讲座,含有两个私有成员变量`room_num`(房间号,浮点型)和`seat_num`(座位数,整型)。`Lecture`类也有一个带参数的构造函数,用于设置房间号和座位数。`getSummary()`函数返回一个字符串,表示讲座的房间号(转换为整型)和座位数。 - `Module`类:表示一个模块,包含私有成员变量`cno`(课程编号)、`sno`(学生编号)和`current_num`(当前人数)。同样,`Module`类有一个带参数的构造函数,用于初始化这些属性。`getSummary()`函数返回一个字符串,包括模块的课程编号、学生编号和当前人数。 在代码中,每个类的`getSummary()`函数都将内部的字符串成员转换为字符数组,以便于返回。这通常是为了满足C++标准库中某些函数(如`cout`)对C风格字符串的需求。`stringstream`用于将浮点数`room_num`转换为整型字符串`first_str`,以便于拼接成最终的摘要信息。 总结来说,这个例子展示了如何使用C++的抽象类继承来定义一个通用接口,并通过子类的实现来提供具体功能。这样的设计使得代码更加模块化,易于扩展,同时也便于维护和管理不同类型的大学对象。
2019-03-20 上传
1. 请创建一个抽象类DataStructure,该类包括下面的成员变量和成员函数: 1) 一个成员变量len,表示里面的元素个数最大值 2) 构造函数DataStructure(int l),将len初始化为0 3) 虚析构函数~DataStructure() 4) 纯虚函数Output(),输出DataStructure中的数据 5) 纯虚函数Size(),返回DataStructure中的元素个数 2. 请创建DataStructure的一个派生类MyString,该类包括下面的成员变量和成员函数: 1) 一个成员变量char* data,表示里面的数据 2) 构造函数MyString(int max_size),将MyString初始化为空串,最大元素个数为max_size 3) 析构函数~MyString(),释放相应的数据 4) Input()函数,往MyString输入数据 5) 重载operator+=()函数,实现两个字符串的连接 6) 重定义Output()和Size()函数 3. 请创建DataStructure的一个派生类MyStack,该类包括下面的成员变量和成员函数: 1) 一个成员变量int* data,用于里面的数据 2) 一个成员变量int top,表示最上面的元素下标 3) 构造函数MyStack(int max_size),将MyStack初始化为空栈,最大元素个数为max_size 4) 析构函数~MyStack(),释放相应的数据 5) Push_back(int e)函数,往栈里面压入一个数据e 6) 重定义Output()和Size()函数 4. 请编写main函数,测试上面程序的正确性 1) 创建两个MyString的对象str1和str2,分别调用Input函数输入str1和str2,然后分别调用operator+=函数将str2连接到str1的末尾 2) 创建一个MyStack的对象stack,调用Push_back函数输入往stack中输入m(m < max_size)个数据 3) 创建一个长度为3的DataStructure*类型的数组,将其3个元素分别指向str1, str2, stack,然后编写for循环调用Size()和Output()函数输出每个元素的大小和内容。 5. 输入输出样例: 1) 输入样例 A promising techni que for checking reachability 4 12 23 34 45 2) 输出样例 47 A promising technique for checking reachability 29 que for checking reachability 4 12 23 34 45