728x90
c++ 다형성
개념이 잘 이해가 안 가서 정리
c++은 상속성(inheritance)을 갖고 있기에,
기본클래스와 파생클래스가 있다.
이때 기본클래스 타입의 포인터를 이용하면 파생클래스또한 같이 다룰 수 있다.
단, 기본클래스 내에서 virtual function으로 정의 된 함수를 파생클래스에서 따로 정의하였을 때만 결과가 달라진다.
ex) Shape 이란 기본 클래스와 Rectangle이란 파생클래스에서
Shape shape;
Rectangle rectangle;
Shape** pointers = new Shape*[2];
pointers[0] = &shape;
pointers[1] = &rectangle;
-> 이렇게 기본클래스 타입의 포인터는 파생클래스 포인터를 저장할 수 있고.
pointers[1] 사용할 수 있는 기능은 기본클래스에서 가상함수로써 정의된 것이어야 한다.
기본클래스로 저장되어 있어도 실행될 때는 각각의 implementation을 호출한다.
virtual function call -> vfptr 를 콜하고 여기엔 address를 확인한다.
참조 : http://ddmix.blogspot.kr/2014/11/cppalgo-2-cpp-overview.html
'hacking or software engineering skills > programming' 카테고리의 다른 글
jupyter lab, jupyter notebook 상에서 arg_parse 이용하기 (0) | 2020.12.22 |
---|---|
c++ OpenSource 이용하기 (0) | 2017.12.20 |