#include <iostream>
using namespace std;
class Animal
{
public:
virtual void Cry()
{
std::cout << "Animal Cry" << std::endl;
}
};
class Dog : public Animal
{
public:
// 함수 오버라이드(override)
virtual void Cry() // virtual, override를 제거해도 빌드 되지만 실수 방지용
{
std::cout << "Dog Cry" << std::endl;
}
};
int main()
{
Animal a; a.Cry();
Dog d; d.Cry();
Animal* p = &d;
p->Cry();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQW5pbWFsCnsKcHVibGljOgogICAgdmlydHVhbCB2b2lkIENyeSgpCiAgICB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJBbmltYWwgQ3J5IiA8PCBzdGQ6OmVuZGw7CiAgICB9Cn07CgpjbGFzcyBEb2cgOiBwdWJsaWMgQW5pbWFsCnsKcHVibGljOgogICAgLy8g7ZWo7IiYIOyYpOuyhOudvOydtOuTnChvdmVycmlkZSkKICAgIHZpcnR1YWwgdm9pZCBDcnkoKSAvLyB2aXJ0dWFsLCBvdmVycmlkZeulvCDsoJzqsbDtlbTrj4Qg67mM65OcIOuQmOyngOunjCDsi6TsiJgg67Cp7KeA7JqpCiAgICB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJEb2cgQ3J5IiA8PCBzdGQ6OmVuZGw7CiAgICB9Cn07CmludCBtYWluKCkKewogICAgQW5pbWFsIGE7IGEuQ3J5KCk7CiAgICBEb2cgZDsgZC5DcnkoKTsKCiAgICBBbmltYWwqIHAgPSAmZDsKICAgIHAtPkNyeSgpOwp9