본문 바로가기
C++

class의 다형성과 가상함수 _210617

by geniee_1 2021. 6. 17.
728x90

1. 다형성

- 업 캐스팅 : 부모 포인터 타입으로, 부모 클래스로부터 파생되는 자식 클래스 객체들의 주소를 가리 킬 수 있다.

- 모든 객체를 부모 클래스 타입으로 인식하기 때문에, 실제 객체가 무엇인지 알 수 없다.( 어떤 자식인지 구분 불가 )

   -> 아래 두 개의 객체를 같은 것으로 인식한다.

- 다운 캐스팅 : 부모 클래스에서 선언된 지 않고 자식 쪽에서만 추가된 함수를 업 캐스팅된 자식 클래스에서 강제로 자식 포인터로 형 변환(캐스팅)하여 자식 클래스의 멤버에 접근하는 법

- 다이나믹 캐스팅

- 가상 함수 virtual 키워드를 통해서, 각 클래스는 자신만의 고유한 가상함수 테이블을 가지게 된다.

 

2. 가상 함수 (virtual)

- 상속 시 가상 함수가 하나 이상 있어야한다. 일반적으로 소멸자를 가상함수로 만든다.

- 가상 함수가 하나 이상 있을 경우 클래스 내에 눈에 보이지 않은 멤버가 추가된다. --> 가상함수 테이블 포인터 (8byte)

- 가상함수 테이블 포인터(_vfptr) : 해당 클래스의 함수들이 등록되어있음

 

3. 추상화

- 실제 객체를 생성할 목적의 클래스가 아닌, 상속을 통해서 구현해야 할 내용을 전달하는 목적으로 만들어진 클래스

- 한 개 이상의 순수 가상 함수를 포함하면 추상 클래스가 된다.

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

Static 변수, 함수  (0) 2021.07.29
Singleton 패턴  (0) 2021.07.29
class의 상속과 다형성 _ 210616  (0) 2021.06.16
Iterator 직접 만들어 보기 _ 18일차_210607  (0) 2021.06.07
Iterator 개념, 직접 만들어보기 _ 17일차 _210604  (0) 2021.06.07