#include <iostream>
class Car
{
public:
void Drive()
{
std::cout << "Car::Drive" << std::endl;
}
};
class Toyota : public Car
{
public:
void Drive()
{
std::cout << "Toyota::Drive" << std::endl;
}
};
class Prius : public Car
{
public:
void Drive()
{
std::cout << "Prius::Drive" << std::endl;
}
};
void DoStuff(Car* c)
{
c->Drive();
}
int main()
{
Car c;
Toyota t;
Prius p;
DoStuff(&c);
DoStuff(&t);
DoStuff(&p);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgQ2FyCnsKcHVibGljOgogICAgdm9pZCBEcml2ZSgpCiAgICB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJDYXI6OkRyaXZlIiA8PCBzdGQ6OmVuZGw7CiAgICB9Cn07CgpjbGFzcyBUb3lvdGEgOiBwdWJsaWMgQ2FyCnsKcHVibGljOgogICAgdm9pZCBEcml2ZSgpCiAgICB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJUb3lvdGE6OkRyaXZlIiA8PCBzdGQ6OmVuZGw7CiAgICB9Cn07CgpjbGFzcyBQcml1cyA6IHB1YmxpYyBDYXIKewpwdWJsaWM6CiAgICB2b2lkIERyaXZlKCkKICAgIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgIlByaXVzOjpEcml2ZSIgPDwgc3RkOjplbmRsOwogICAgfQp9OwoKCnZvaWQgRG9TdHVmZihDYXIqIGMpCnsKICAgIGMtPkRyaXZlKCk7Cn0KCmludCBtYWluKCkKewogICAgQ2FyIGM7CiAgICBUb3lvdGEgdDsKICAgIFByaXVzIHA7CgogICAgRG9TdHVmZigmYyk7CiAgICBEb1N0dWZmKCZ0KTsKICAgIERvU3R1ZmYoJnApOwp9