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;
};