반응형


//*************************************************
// 다형성 !! 
//*************************************************
//*************************************************
	class Person 
	{
	}

	class Student : public Person 
	{
	
	}
	
	void main()
	{
		// 
		int a = 10; 
		int b = 10;
		double d; 
		a = b; 
		// 
		a = d; 
		// 부모의 포인터       자식의 객체  
		Person * p= new Student(); 

	}





//*************************************************
//  - 다형성 
//*************************************************
//  --> 부모는 자식을 가르킬 수 있다 !! 
//*************************************************
#include 
using namespace std;

class Player 
{	
private:
	int m_no; //넘버 
	int m_hp; //체력 
public :
	Player(int no = 0, int hp = 100 )
	{
		m_no = no;
		m_hp = hp;
	}
   virtual void training(){ cout << "키티타카 ,,," << endl; } 
	virtual	void Vacaiton(){}
};
// 공격수 
class  Striker : public Player
{	
private : 
	int m_goal;  // 
public : //오버라이딩 :  재정의 : 
	// 부모의 행동을 자식이 새롭게 정의 하는것 !! 
	void training(){ cout << " 슛~ "<< endl; } 	
	void Shot(){} 
	void Vacaiton(){}
};

class Defender :  public Player
{
private : 
	int m_tackle; //태클 
public : // 오버라이딩 : 재정의 !! 
	void training(){ cout <<  " 공 돌리기 !! "  << endl; }
	void Vacaiton(){}
};
void main()
{
	Player * p1 =  new Striker();
	Player * p2 =  new Defender(); 

	// 축구팀 !! 
	Player * PlayerList[3]; 
	
	PlayerList[0] = new Striker(); 
	PlayerList[1] =  new Defender(); 
	PlayerList[2] =  new Striker(); 
	
	for(int  i = 0; i<3; i++) 
	{	// 신기한 코드 !! --> 알아서 찾아간다 !! 
		// --> 
		//함수호출 
		PlayerList[i]->training();  
		// --> 동적 바인딩 : 실행 시간에 
		// 어떤 함수 호출될지가 결정되는것 !! 
	// 하나의 코드로 다양한 형태로 실행이 되는것 !! 
		// --> 다형성 !!  
		//함수 호출 
		printf("");  // 코딩 !!! --> 정적 바인딩 !! 
		// 정적 바인딩 --> 컴파일타임: 코딩할때 어떤함수
		//를 호출 할지가 결정된다 !! 
	}


}


'C, C++' 카테고리의 다른 글

[C++] 전역 함수를 이용한 연산자 오버로딩  (0) 2014.11.18
[C++] 연산자 오버로딩  (0) 2014.11.18
[C++] 상속 이란? 이해, 생성, 소멸  (0) 2014.11.18
[C++] this 이해  (0) 2014.11.18
[C++] 캡슐화  (0) 2014.11.18

+ Recent posts