If Base is a base class and Derived a derived class and there are 25 instances of Derived, how are the vtables set up to be accessed by all the instances? Where are they loaded in the memory?
Share
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
Compilers are allowed to implement dynamic dispatch however they want in c++, i don’t think there is actually any requirement to even use a vtable at all, but it would be very unusual to find a compiler that didn’t.
In most cases i think that each class (that contains some virtual methods) will own a single vtable (so if i had 5 instances of
class Ai will still only have 1 vtable), but this behaviour should not be relied upon in any way.Non virtual classes have no need for vtables as far as i know.
Reading your question it seems as if you think that each object has its own copy of the code, I’m not sure and i don’t want to accuse you of anything like that but just in case …
Google something like: “what does a c++ object look like in memory”