Q:

Is there a lint tool that checks a child class virtual function matches the parent class definition?

I've just changed a bunch of virtual methods in a non-trivial code base to support 64bit portability. And I've done a number of searches through the code base looking for derived classes that need to be edited to change the virtual function argument types. Unfortunately the compiler (VS2013) doesn't warn me that the derived classes version of the function has the wrong type and won't get called. I keep finding instances that I've missed. And short of just being very thorough, I'd like to run a tool over it that does all the checks for me.
Does such a tool exist?

A:

There is an easier solution: use the override specifier. If you add override to the end of a subclass virtual function, when you change the parameters of the base class virtual function, there will be a compiler error unless you change the subclass virtual function as well.
You can also use the final specifier to indicate that a virtual function can't be implemented by a subclass.

A:

Enable warning C4263, which for some strange reason is disabled by default even at /W4. 

'function' : member function does not override any base class virtual member function
A class function definition has the same name as a virtual function in a base class but not the same number or type of arguments. This effectively hides the virtual function in the base class.
This warning is off by default. See Compiler Warnings That Are Off by Default for more information.

For the record, the equivalent gcc/clang flag is -Woverloaded-virtual. 

