반응형


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//*************************************************
// 다형성 !!
//*************************************************
//*************************************************
    class Person
    {
    }
 
    class Student : public Person
    {
     
    }
     
    void main()
    {
        //
        int a = 10;
        int b = 10;
        double d;
        a = b;
        //
        a = d;
        // 부모의 포인터       자식의 객체 
        Person * p= new Student();
 
    }



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
//*************************************************
//  - 다형성
//*************************************************
//  --> 부모는 자식을 가르킬 수 있다 !!
//*************************************************
#include <iostream>
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("");  // 코딩 !!! --> 정적 바인딩 !!
        // 정적 바인딩 --> 컴파일타임: 코딩할때 어떤함수
        //를 호출 할지가 결정된다 !!
    }
 
 
}
 
</iostream>


'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