I read a lot of people writing \"a virtual table exists for a class that has a virtual function declared in it\".
My question is, does a vtable exists only for a cla
Yes it's true. Actually, given base's defintion:
class derived:public base{
public:
 void print(){cout<<"derived print\n";}
};
is completely equivalent to:
class derived:public base{
public:
 virtual void print(){cout<<"derived print\n";}
};
... because you already defined print as virtual in base.
I'd wish the compiler would enforce that...