Virtual functions cannot be static because they rely on specific objects or references of the base class to determine which implementation of the function is called. This is not the case in static functions that rely on the class directly.