This is completely convention, there is no special reason for it. Usually people try to stay consistent across a project, or across teams or even an entire company. It helps developers who pick up your code after you're long gone understand that you abc.hh goes with file abc.cc and abc.h goes with abc.c.