Double declaration of virtual

When we declare a function as virtual in the header, we don't need to declare it in the cpp file. The compiler complains if we do