because fill function refer A but B is double sized memory Object Slicing in C++ - GeeksforGeeksWhen a derived class object is assigned to a base class object in C++, the derived class object's extra attributes are sliced off (not considered) to generate the base class object; and this whole process is termed object slicing.https://www.geeksforgeeks.org/object-slicing-in-c/[C++] Object Slicing (오브젝트 슬라이싱)Class의 상속과정에서 일어날 수 있는 문제 중의 하나인 Object Slicing에 대해서 알아본다. 그와 더불어 Operator Overloading에서 일어날 수 있는 문제 에 대해서도 배워보자. 상속으로 인한 Onject Slicing (오브젝트 슬라이싱) 문제점 Object Slicing이란 말 그래도 오브젝트 즉 객체가 Slicing 되는 것이다. 어떻게 해야지 Slicing이 되는지 Slicing이 되면 무슨 문제가 생기는지 아래 코드를 통해서 설명한다.https://pretending.tistory.com/entry/C-Object-Slicing-%EC%98%A4%EB%B8%8C%EC%A0%9D%ED%8A%B8-%EC%8A%AC%EB%9D%BC%EC%9D%B4%EC%8B%B1[C++] Object slicingObject slicing 이란 상속받은 class의 instance를 부모 class의 instance로 복사함으로써 상속받은 class가 가지고 있던 정보가 손실되는 것을 말한다. 이는 기능이 아니라 stack에 값을 할당하는 value 타입의 특성 때문에 생기는 버그다. 그래서 heap에 값을 할당하는 reference 타입밖에 없는 Java 같은 언어에서는 발생하지 않는다. Object slice 때문에 value type에 대해서는 upcasting을 해서는 안된다.https://blog.seulgi.kim/2015/02/c-object-slicing.html