UnitCommand objects are currently used only as arguments to one function - Unit::issueCommand. While units can be issued commands the normal way via the Unit methods (i.e. Unit::attack), in some cases you may want to have a function that can process any unit command, such as when you're writing a proxy for BWAPI.