用c++语言编程一个完整代码首先,创建一个基类 Book,包含书的基本信息,如书名、作者、出版社等。这个类可以包含构造函数、析构函数、复制构造函数等成员函数。为了实现多态输出,可以在这个类中编写一个虚函数 print(),用于输出图书的信息。 然后,可以创建一个派生类 EBook,继承自 Book 类,并增加一些新的成员变量,如电子书的文件格式等。这个类中也可以包含构造函数、析构函数等成员函数。 在主函数中,可以创建一个指向 Book 类的指针数组,然后动态地创建 Book 类的对象和 EBook 类的对象,将这些对象存储到指针数组中。然后,可以通过循环来调用每个对象的 print() 函数,实现多态输出。
时间: 2023-02-13 07:18:57 浏览: 37
#include <iostream>
#include <string>
class Book
{
public:
// 构造函数
Book(std::string name, std::string author, std::string publisher)
: m_name(name), m_author(author), m_publisher(publisher) {}
// 析构函数
virtual ~Book() {}
// 复制构造函数
Book(const Book& book)
: m_name(book.m_name), m_author(book.m_author), m_publisher(book.m_publisher) {}
// 输出信息的虚函数
virtual void print() const
{
std::cout << "书名: " << m_name << std::endl;
std::cout << "作者: " << m_author << std::endl;
std::cout << "出版社: " << m_publisher << std::endl;
}
protected:
std::string m_name;
std::string m_author;
std::string m_publisher;
};
class EBook : public Book
{
public:
// 构造函数
EBook(std::string name, std::string author, std::string publisher, std::string format)
: Book(name, author, publisher), m_format(format) {}
// 析构函数
virtual ~EBook() {}
// 复制构造函数
EBook(const EBook& ebook)
: Book(ebook), m_format(ebook.m_format) {}
// 输出信息的函数
virtual void print() const
{
// 调用基类的 print 函数
Book::print();
std::cout << "文件格式: " << m_format << std::endl;
}
protected:
std::string m_format;
};
int main()
{
Book* books[2];
books[0] = new Book("《钢铁是怎样炼成的》", "奥斯特洛夫斯基", "哈尔滨出版社");
books[1] = new EBook("《计算机科学导论》", "乔治·贝尔", "机械工业出版社", "PDF");
for (int i = 0; i < 2; i++)
{
books[i]->print();
std::cout << std::endl;
}
return 0;
}