#include <iostream>
#include <string>
#include <vector>
class Book
{
protected:
std::string title_;
std::string author_;
public:
Book(std::string title, std::string author)
: title_(title), author_(author) {}
virtual void printInfo() {
std::cout << "Book: " << title_ << " by " << author_ << std::endl;
}
virtual ~Book() {}
};
class EBook : public Book
{
private:
double fileSizeMB_;
public:
EBook(std::string title, std::string author, double fileSize)
: Book(title, author), fileSizeMB_(fileSize) {}
void printInfo() {
std::cout << "EBook: " << title_ << " by " << author_ << " (" << fileSizeMB_ << " MB)" << std::endl;
}
};
int main()
{
std::vector<Book*> library;
library.push_back(new EBook("1984", "George Orwell", 1.2));
library.push_back(new Book("To Kill a Mockingbird", "Harper Lee"));
for (Book* b : library) {
b->printInfo();
}
for (Book* b : library) {
delete b;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dmVjdG9yPgoKY2xhc3MgQm9vawp7CnByb3RlY3RlZDoKICBzdGQ6OnN0cmluZyB0aXRsZV87CiAgc3RkOjpzdHJpbmcgYXV0aG9yXzsKCnB1YmxpYzoKICBCb29rKHN0ZDo6c3RyaW5nIHRpdGxlLCBzdGQ6OnN0cmluZyBhdXRob3IpCiAgICAgIDogdGl0bGVfKHRpdGxlKSwgYXV0aG9yXyhhdXRob3IpIHt9CgogIHZpcnR1YWwgdm9pZCBwcmludEluZm8oKSB7CiAgICBzdGQ6OmNvdXQgPDwgIkJvb2s6ICIgPDwgdGl0bGVfIDw8ICIgYnkgIiA8PCBhdXRob3JfIDw8IHN0ZDo6ZW5kbDsKICB9CgogIHZpcnR1YWwgfkJvb2soKSB7fQp9OwoKY2xhc3MgRUJvb2sgOiBwdWJsaWMgQm9vawp7CnByaXZhdGU6CiAgZG91YmxlIGZpbGVTaXplTUJfOwoKcHVibGljOgogIEVCb29rKHN0ZDo6c3RyaW5nIHRpdGxlLCBzdGQ6OnN0cmluZyBhdXRob3IsIGRvdWJsZSBmaWxlU2l6ZSkKICAgICAgOiBCb29rKHRpdGxlLCBhdXRob3IpLCBmaWxlU2l6ZU1CXyhmaWxlU2l6ZSkge30KCiAgdm9pZCBwcmludEluZm8oKSB7CiAgICBzdGQ6OmNvdXQgPDwgIkVCb29rOiAiIDw8IHRpdGxlXyA8PCAiIGJ5ICIgPDwgYXV0aG9yXyA8PCAiICgiIDw8IGZpbGVTaXplTUJfIDw8ICIgTUIpIiA8PCBzdGQ6OmVuZGw7CiAgfQp9OwoKaW50IG1haW4oKQp7CiAgc3RkOjp2ZWN0b3I8Qm9vayo+IGxpYnJhcnk7CiAgbGlicmFyeS5wdXNoX2JhY2sobmV3IEVCb29rKCIxOTg0IiwgIkdlb3JnZSBPcndlbGwiLCAxLjIpKTsKICBsaWJyYXJ5LnB1c2hfYmFjayhuZXcgQm9vaygiVG8gS2lsbCBhIE1vY2tpbmdiaXJkIiwgIkhhcnBlciBMZWUiKSk7CgogIGZvciAoQm9vayogYiA6IGxpYnJhcnkpIHsKICAgIGItPnByaW50SW5mbygpOwogIH0KCiAgZm9yIChCb29rKiBiIDogbGlicmFyeSkgewogICAgZGVsZXRlIGI7CiAgfQoKICByZXR1cm4gMDsKfQ==