0
I'm not exactly sure what you mean by "virtual class". For my answer I will assume you mean "virtual inheritance" of a class as otherwise there are only virtual functions in C++.
A class is best inherited virtually, if you have multiple inheritance from classes that share the same base class. Inheritance in this situation leaves you with multiple definitions of the same fields (not necessarily functions, as they are most of the time only declared in headers).
By inheriting from one of the classes virtually (using the keyword "virtual"), you forego of the conflicting (not all) fields from this class.



