> I don't think you need prototypes to understand this, though it is maybe a consequence of them.
You do indeed need to understand prototypes to explain this behavior. "Free functions" doesn't really make sense, because it obviates the need for classes.