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;
}