Here is the short answer. Late binding (virtuality) is typically implemented with a pointer indirection. You have to pay for this pointer, but sometimes you don’t need it. Therefore, you use in C++ by default, in contrast to Java or Python, early binding.
Long answer: Wait for our inheritance lessons.