C++ pointer to base class
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <vector>
class Parent {
public:
    virtual void sayHi()
    {
        std::cout << "Parent here!" << std::endl;
    }
};
class Child : public Parent {
public:
    void sayHi()
    {
        std::cout << "Child here!" << std::endl;
    }
};
class DifferentChild : public Parent {
public:
    void sayHi()
    {
        std::cout << "DifferentChild here!" << std::endl;
    }
};
int main()
{
    std::vector<Parent*> parents;
    // Add 10 random children
    srand(time(NULL));
    for (int i = 0; i < 10; ++i) {
        int child = rand() % 2; // random number 0-1
        if (child) // 1
            parents.push_back(new Child);
        else
            parents.push_back(new DifferentChild);
    }
    // Call sayHi() for each type! (example of polymorphism)
    for (const auto& child : parents) {
        child->sayHi();
    }
    return 0;
}