반응형
안녕하세요. 훈츠입니다. 금일은 클래스의 가상함수와 다형성에 대해 포스팅 합니다.
가상 함수
상위 클래스에 정의된 함수를 파생 클래스에서 재정의 한 함수 입니다. 오버라이딩 관계입니다. 상위 클래스의 함수의 매개변수는 같아야 하고, 리턴형은 상관 없습니다.
※ 형식
- 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 = b;
ar = c;
}
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 |