O .h ou .hpp conceitualmente são arquivos de cabeçalho e possuem códigos que o compilador precisa para compilar outras partes. Em geral ali contém apenas as estruturadas de dados (classes por exemplo) com as assinaturas de métodos e funções, além de implementações que devem ser linearizadas ou gabaritadas.
https://pt.stackoverflow.com/questions/240579/o-que-s%C3%A3o-os-arquivos-com-extens%C3%A3o-cpp-e-h

