.c vs .cc vs. .cpp vs .hpp vs .h vs .cxx [duplicado]

Possíveis duplicatas:
* .h ou * .hpp para suas definições de classe
Extensão de arquivo de código C ++ correta? .cc vs .cpp

Eu costumava pensar que costumava ser isso:

.h arquivos são arquivos de cabeçalho para C e C ++ e geralmente contêm apenas declarações..c arquivos são código fonte C..cpp arquivos são código fonte C ++ (que também pode ser código fonte C).

então arquivos como.hpp, .cce.cxx apareceu e fiquei totalmente confuso ... qual é a diferença (ões) entre elas? Quando você usa os "novos"?