컴퓨터 언어/C++

[C++] C++ 13일차 가상함수와 다형성

훈츠 2020. 4. 15. 08:33
반응형

안녕하세요. 훈츠입니다. 금일은 클래스의 가상함수와 다형성에 대해 포스팅 합니다. 


가상 함수 

상위 클래스에 정의된 함수를 파생 클래스에서 재정의 한 함수 입니다. 오버라이딩 관계입니다. 상위 클래스의 함수의 매개변수는 같아야 하고, 리턴형은 상관 없습니다. 

 

※ 형식

  • virtual return형 함수명( 매개변수 ) {  }
  • main 에서 사용 시, 클래스 포인터 혹은 참조자를 이용 할 수 있습니다.
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
//훈스 블로그---------------------------------------------------------------------------------------------------코드//
class A
{
public:
    virtual void print() { cout << "A클래스" << endl;} // 가상 함수
 
};
class B : public A
{
public:
    void print() { cout << "B클래스" << endl; }
};
 
class C : public A
{
public:
    void print() { cout << "C클래스" << endl; }
};
 
int main()
{
    //포인터 형 
    cout << "포인터 형" << endl;
    A* ap;
    A a;
    B b;
    C c;
    ap = &a;      // a 주소 할당
    ap->print();
    ap = &b;      // b 주소 할당
    ap->print();
    ap = &c;      // c 주소 할당
    ap->print();
    cout << "참조자형" << endl;
 
    //참조자 형 
    A& ar = a;    // 선언과 동시에 a 주소 참조 복사
    ar.print();
    ar = b; 
    ar.print();
    ar = c;
    ar.print();
 
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs

 

※ 다형성 (polymorphism)

 

상위 클래스의 가상 함수가 하위 클래스의 종류와 상관 없이 재정의 되어 실행 되는 특성 

 

 

 

반응형

'컴퓨터 언어 > C++' 카테고리의 다른 글

[C++] C++ 15일차 연산자 오버로딩  (0) 2020.04.17
[C++] C++ 14일차 가상함수와 추상클래스  (0) 2020.04.16
[C++] C++ 12일차 상속 4  (0) 2020.04.14
[C++] C++ 11일차 상속 3  (0) 2020.04.13
[C++] C++ 10일차 상속 2  (0) 2020.04.10