: virtual을 사용해서 자식클래스의 오버라이딩 함수가 호출되록 하자.
이렇게 하면 장점은?
: 코드량을 줄일 수 있다.
예시 : 정적으로 할당할 경우
but 부모클래스로 자식클래스를 대상으로 동적할당 하면 싸그리 묶을 수 있다는 장점이 있따
#include <iostream>
#include <string>
#include <vector>
class Animal
{
protected:
std::string mName;
public :
Animal(std::string inName)
: mName(inName){}
virtual void speak(){
std::cout << mName << " ?? " << std::endl;}
};
class Cat : public Animal
{
public:
Cat(std::string inName)
: Animal(inName){}
void speak(){
std::cout << mName << " 야옹! " << std::endl;}
};
class Tiger : public Animal
{
public:
Tiger(std::string inName)
: Animal(inName){}
void speak(){
std::cout << mName << " 어흥! " << std::endl;}
};
int main()
{
Tiger tiger[] = { Tiger("호랭이1"), Tiger("호랭이2")
, Tiger("호랭이3") };
Cat cat[] = { Cat("야옹이1"), Cat("야옹이2") };
Animal *animal[] = { &tiger[0], &tiger[1] ,&tiger[2]
,&cat[0], & cat[1]};
for (int i = 0; i < 5; ++i)
animal[i]->speak();
return 0;
}