It's a long explanation and I'm tired.
Super short version:
Virtual: virtual things can be used by classes that inherit that base, but not by the base class itself. The reason being is that method has to be defined somewhere. virtual things are not real untill a class implements that virtual method. The advantage fo doing this is a base class pointer can call methods in it's child classes whitout specifying or knowing exactly what each will do.
Costructors: Makes class object, allocates memory, assigns variables, etc.
Destructor: Deletes object.