用c++语言编程一个完整代码首先,创建一个基类 Book,包含书的基本信息,如书名、作者、出版社等。这个类可以包含构造函数、析构函数、复制构造函数等成员函数。为了实现多态输出,可以在这个类中编写一个虚函数 print(),用于输出图书的信息。 然后,可以创建一个派生类 EBook,继承自 Book 类,并增加一些新的成员变量,如电子书的文件格式等。这个类中也可以包含构造函数、析构函数等成员函数。 在主函数中,可以创建一个指向 Book 类的指针数组,然后动态地创建 Book 类的对象和 EBook 类的对象,将这些对象存储到指针数组中。然后,可以通过循环来调用每个对象的 print() 函数,实现多态输出。 另外,可以编写一个静态函数 menu(),用于输出操作菜单,让用户选择要进行的操作,例如添加图书、删除图书等。
时间: 2023-02-13 09:18:57 浏览: 97
以下是使用 C 语言实现的代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_BOOKS 10 // 最多存储的图书数量
// 定义基类 Book
typedef struct Book {
char name[50]; // 书名
char author[50]; // 作者
char publisher[50]; // 出版社
void (*print)(struct Book*); // 多态输出函数
} Book;
// 定义派生类 EBook
typedef struct EBook {
Book book; // 继承自 Book 类
char format[20]; // 电子书文件格式
} EBook;
// 实现基类 Book 的多态输出函数
void Book_print(Book *book) {
printf("图书信息:\n");
printf(" 书名:%s\n", book->name);
printf(" 作者:%s\n", book->author);
printf(" 出版社:%s\n", book->publisher);
}
// 实现派生类 EBook 的多态输出函数
void EBook_print(Book *book) {
EBook *ebook = (EBook*)book; // 强制类型转换
printf("图书信息:\n");
printf(" 书名:%s\n", ebook->book.name);
printf(" 作者:%s\n", ebook->book.author);
printf(" 出版社:%s\n", ebook->book.publisher);
printf(" 文件格式:%s\n", ebook->format);
}
// 定义指向 Book 类的指针数组
Book *books[MAX_BOOKS];
int num_books = 0; // 当前存储的图书数量
// 函数:显示操作菜单
void menu() {
printf("\n请选择要进行的操作:\n");
printf("1. 添加图书\n");
printf("2. 删除图书\n");
printf("3. 输出图书信息\n");
阅读全文