A virtual class is a class with a virtual function. An abstract class is a class that has a pure virtual function. One cannot create abstract classes (only subclasses of abstract classes). However, non-abstract virtual classes can be instantiated. Confusing enough? .
Code:class virtualClass { public: virtual void someVirtualFunc(); }; class abstractClass { public: virtual void pureVirtualFunc()=0; };