can you override a non-virtual function in c++