Escrevendo C ++ mais amigável à refatoração
No C ++, você não precisa usar cabeçalhos. Você pode definir o objeto inteiro em um arquivo, exatamente como faria com C # ou Java. Geralmente, os desenvolvedores de C mantêm chamadas externas em um arquivo de cabeçalho. Todas as chamadas internas seriam definidas no arquivo .c. Da mesma forma, você pode reservar seus arquivos .h em C ++ para as classes / interfaces (classes abstratas virtuais puras) / etc. que devem ser compartilhados fora da DLL. Para classes / estruturas / interfaces internas, etc., você simplesmente incluiria o arquivo .cpp necessário:
#include<myclass.cpp>
Essa não parece ser a abordagem mais popular, mas é legal em C ++. Definitivamente, seria uma possibilidade para todo o seu código interno. Isso permite que o código interno e o conjunto de classes mudem muito mais radicalmente, fornecendo uma interface mais estável para o código fora da sua biblioteca / executável interagir.
Ter toda a sua classe dentro de um arquivo facilitará o que você deseja. Ele não resolverá o problema de renomear um método e ter que procurar em todos os lugares em que esse método é chamado, mas garantirá que você tenha mensagens de erro mais inteligíveis. Nada pior do que o cabeçalho declarar um método de uma maneira, mas você o implementa de maneira diferente. Outro código que chama o arquivo de cabeçalho será compilado corretamente e você receberá uma exceção de link, enquanto o arquivo de implementação será o que reclama que o método não foi definido. Quando você define todos os métodos em vigor (na declaração de classe real), recebe a mesma mensagem de erro, independentemente do arquivo que o inclui.
Você também pode querer analisar esta pergunta: Boas ferramentas de refatoração para C ++
Como o C / C ++ resolve arquivos de cabeçalho / implementação
No nível C base (e o C ++ é construído sobre essa base), os arquivos de cabeçalho declaram a promessa de uma função / estrutura / variável que é suficiente para permitir que um compilador crie o arquivo de objeto. Da mesma forma, os arquivos de cabeçalho C ++ declaram a promessa de funções, estruturas, classes, etc. É essa definição que o compilador usa para reservar espaço na pilha, etc.
Os arquivos .c ou .cpp têm a implementação. Como o compilador converte cada arquivo de implementação em um objeto, há ganchos para conceitos não implementados (o que foi declarado no cabeçalho). O vinculador vincula os ganchos às implementações em outros arquivos de objeto e cria um binário maior que inclui todo o código (biblioteca compartilhada ou executável).
VS Specific
Quanto ao trabalho com aqueles no Visual Studio, existem alguns assistentes que ajudam a tornar as coisas um pouco mais fáceis. O novo assistente de classe criará seu par correspondente de cabeçalho e arquivos de implementação. Existe até um recurso de navegador de classe que permitirá que você declare novos métodos. Ele injeta a definição no cabeçalho e o stub de implementação no arquivo .cpp. O Visual Studio possui esses recursos há mais de uma década (desde que eu os usei).