slicing
-
[ Anything ] - Object SlicingC++ 2021. 5. 20. 19:41
Object Slicing 다음과 같은 짧은 코드가 있다고 가정 해봅시다. 언뜻 보기에는 똑같은 결과가 나올 것 같습니다. 실행결과는 그렇지 않습니다. reference로 받은 함수는 정상적으로 모든 정보를 출력해주었으나 call by value로 받은 함수는 age만 제대로 출력이 된 것을 확인할 수 있습니다. Virtual table and Virtual pointer 먼저 vtbl과 vptr이 무엇인지 살펴보아야 합니다. 컴파일러는 이 가상함수들을 다룰 때 각 object들에 우리가 모르는 사이에 어떤 포인터를 달아서 관리합니다. 그리고 이 포인터들은 함수들의 주소가 보관되어 있는 static array로 이어지며 Compile time에 생성되는 이 배열에는 가상함수테이블[Virtual Funct..