Answer:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
class BaseItem {
public:
 void SetLastName(string providedName) {
 lastName = providedName;
 };
 void PrintItem() const {
 cout << "Last name: " << lastName << endl;
 };
protected:
 string lastName;
};
class DerivedItem : public BaseItem {
public:
 void SetFirstName(string providedName) {
 firstName = providedName;
 };
 void PrintItem() const override {
 cout << "First and last name: ";
 cout << firstName << " " << lastName << endl;
 };
private:
 string firstName;
};
int main() {
 BaseItem* baseItemPtr = nullptr;
 DerivedItem* derivedItemPtr = nullptr;
 vector<BaseItem*> itemList;
 unsigned int i;
 baseItemPtr = new BaseItem();
 baseItemPtr->SetLastName("Smith");
 derivedItemPtr = new DerivedItem();
 derivedItemPtr->SetLastName("Jones");
 derivedItemPtr->SetFirstName("Bill");
 itemList.push_back(baseItemPtr);
 itemList.push_back(derivedItemPtr);
 for (i = 0; i < itemList.size(); ++i) {
 itemList.at(i)->PrintItem();
 }
 return 0;
}