Object slicing is what happens when you have an inheritance hierarchy but pass an object of a derived type to a function that accepts a base object by value, or perform an assignment to a variable of the base type.
That the language allows this value-conversion implicitly at all can be seen as problematic on its own, but the use of virtual functions can cause slicing behavior to be even more surprising: https://www.geeksforgeeks.org/object-slicing-in-c/