The Godot docs for the object class says the following:
Registering it will allow the class to be instanced by scripts, code, or creating them again when deserializing.
Registering as virtual is the same but it can’t be instanced.
If an Object derived class is instanced but has not been registered, it will be registered as virtual automatically.
How is this possible? If registering a class as virtual means that it can't be instanced, then how is it that an instanced class will automatically be registered as virtual if it has not previously been registered? This seems like a contradiction.
(ps, is this the right place to ask questions about engine development?)