class name {
private:
int first;
int second;
public:
int func(int);
};
If I type the size of the class it says = 8 where the size of int is 4.
If I made the function "func" as virtual the size of class becomes 12. Why?
What the magic with virtual.
Printable View
class name {
private:
int first;
int second;
public:
int func(int);
};
If I type the size of the class it says = 8 where the size of int is 4.
If I made the function "func" as virtual the size of class becomes 12. Why?
What the magic with virtual.
there is a vtable (virtual function table) that holds the address of the virtual function. This is necessary to choose the right function depending on the actual object instance (ie inherited function calls other function which might be overloaded by instance class, if directly called, old (not overloaded) code would execute. Called through vtable -> right function code executes. 32 bit pointer eq 4 byte memory space
hope this helps
chrislaw