What is the purpose of the 'override' keyword in header declarations?

Technicly speaking you don´t need virtual or override in the derived class to actually override the Function. It overrides just fine aslong the basclass has the virtual Keyword.

Those Keywords make sure in case you change the baseclass to be none virtual or finalize a virtual function to throw you a Compile Time Error since there would be no functionality anymore to override. It makes spotting Bugs related to that easier since you get a Error beforehand and don´t have to figure out why your Function all of a sudden does not execute anymore. Aswell as making it easier for you to know that you override something when looking at the definition.

The override Keyword alone should be enough if you preffer it that way.