A virtual class is a Class which represents a sub-component of a Class, but which you cannot instanciate nor reference into a Variable.

Components written in C/C++

In native components, virtual classes are a mechanism designed so that the user manipulates temporary objects, without being having to create them. It is SO much faster!

Note that the name of a virtual Class must begin with a dot. For example, the name of the virtual class used by the ListView.Item is .listviewitem.


The Property of the qt component ListView uses a virtual class for representing a ListView item.

Virtual classes are just used as datatypes by the interpreter. But the Object used behind is the real Object coming from the real non-virtual Class.

For example, the Item property of the ListView stores the index of the item you want to deal with in the ListView, and returns this ListView. The ListView becomes then a virtual class Object that you cannot store in a Variable. As you must use the virtual class Object immediately, by calling a Method or a property on it, the stored index will be used immediately too.

Components written in Gambas

In components written in Gambas, virtual classes are classes whose name begins with an underscore.

They are actually true classes that work exactly like normal classes, and so they are not faster in any way.