运用C++知识编写程序。首先,创建一个基类 Book,包含书的基本信息,如书名、作者、出版社等。这个类可以包含构造函数、析构函数、复制构造函数等成员函数。为了实现多态输出,可以在这个类中编写一个虚函数 print(),用于输出图书的信息。 然后,可以创建一个派生类 EBook,继承自 Book 类,并增加一些新的成员变量,如电子书的文件格式等。这个类中也可以包含构造函数、析构函数等成员函数。
时间: 2023-02-13 16:39:59 浏览: 111
你可以使用如下的代码来实现这个需求:
```
#include <iostream>
#include <string>
using namespace std;
// 基类 Book
class Book {
public:
Book(string name, string author, string publisher) : name_(name), author_(author), publisher_(publisher) {}
virtual ~Book() {}
// 复制构造函数
Book(const Book& book) : name_(book.name_), author_(book.author_), publisher_(book.publisher_) {}
// 输出图书信息
virtual void print() const {
cout << "图书名称: " << name_ << endl;
cout << "作者: " << author_ << endl;
cout << "出版社: " << publisher_ << endl;
}
private:
string name_;
string author_;
string publisher_;
};
// 派生类 EBook
class EBook : public Book {
public:
EBook(string name, string author, string publisher, string format) : Book(name, author, publisher), format_(format) {}
virtual ~EBook() {}
// 复制构造函数
EBook(const EBook& ebook) : Book(ebook), format_(ebook.format_) {}
// 输出图书信息
virtual void print() const {
// 调用基类的 print() 函数
Book::print();
cout << "文件格式: " << format_ << endl;
}
private:
string format_;
};
int main()
{
// 创建基类 Book 对象
Book book("C++ Primer", "Lippman", "Addison-Wesley");
book.print();
// 创建派生类 EBook 对象
EBook ebook("C++ Primer", "Lippman", "Addison-Wesley", "PDF");
ebook.print();
return 0;
}
```
在这个程序中,基类 `Book` 定义了一个虚函数 `print()`,派生类 `EBook` 重写了这个虚函数,并在其中调用了基类的 `print()` 函数。在 `main()` 函数中,我们分别创建了一个基类 `Book` 对象和一个派生类 `EBook`
阅读全文