12.1 다형성의 기본 개념

보물창고·2021년 8월 12일
0

자식 클래스의 객체에 부모 클래스의 포인터를 사용한다면?

: 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;
}
profile
🔥🔥🔥

0개의 댓글