In large projects each class often goes into its own pair of CPP & H files, to keep sizes manageable, make changes more visible and localized, and so that different people can work on different files instead of all trying to change one big monster file.
Why not just a bunch of CPP files though? Aside from information hiding, the H file should change much less often than the CPP file. Keeping them separate makes it easier to tell when function or class definitons have changed (a big deal for anyone using the class or function) as opposed to the implementation changing (much more often, and something that code using the class in other CPP files should be able to ignore).
Also, for really elaborate classes there may be one H file and more than one CPP file. Consider a graphics transformation object where one team member is writing the JPEG encoding while another is writing the bilinear filtering for resizing. H file = CPicture.H, CPP #1 = CPictureEncoder.CPP CPP #2 = CPictureResizer.CPP.
(edit, yes I know in that case the encoder and resizer might be friend classes or non-class functions instead of part of the main class.)