É porque o compilador C ++ deve conhecer o tamanho real da classe para alocar a quantidade certa de memória na instanciação. E o tamanho inclui todos os membros, também os particulares.
Uma forma de evitar isso é usar o idioma Pimpl , explicado por Herb Sutter em sua série Guru of the Week # 24 e # 28 .
Atualizar
Na verdade, isso (ou mais geralmente, a distinção de cabeçalho / arquivo de origem e #include
s) é um grande obstáculo em C ++, herdado de C. Nos dias anteriores, C ++ C foi criado, ainda não havia experiência com desenvolvimento de software em larga escala, onde isso começa a causar problemas reais. As lições aprendidas desde então foram atendidas por designers de linguagens mais novas, mas o C ++ está limitado por requisitos de compatibilidade retroativa, o que dificulta muito a abordagem de um problema tão fundamental na linguagem.