Alguns programadores relutam em usar o método 1 apresentado acima, pois ele mistura a implementação com a definição da função. Imagine uma empresa querendo vender um programa, mas não quer divulgar o seu código fonte (implementação). Para que o programa funcione, obviamente as bibliotecas usadas e os objetos compilados são estritamente necessários para o funcionamento do programa. Com certeza, a empresa não gostaria muito de deixar funções de implementação em suas bibliotecas.
Como alternativa ao método 1, uma outra alternativa é pode ser aplicada:
arquivo.hpp:
arquivo.cpp:
main.cpp:
Com isso teremos abstração (definição e implementação da função) e aplicação (utilização da função) no mesmo arquivo que será compilado, o
main.cpp. Dessa forma o compilador saberá o que fazer.
Este método é praticamente o mesmo que o 1º. A única diferença é que separamos a implementação da definição da função.
Como toda a informação se encontra indiretamente no
main.cpp, a compilação do
arquivo.cpp torna-se desnecessária.
Bom, basicamente é isso. Estes são os dois métodos mais utilizados, e relativamente fáceis.
Espero ter ajudado. :)
Obs.: Quaisquer dúvidas ou correções de alguma besteira que eu possa ter dito, me corrijam, por favor! ;)
Glossário
Aqui vão algumas descrições sobre termos um pouco mais técnicos utilizados no artigo.
- Abstração: é onde definimos/implementamos a função; onde escrevemos o seu código.
- Aplicação: é onde utilizamos/chamamos a função.
- Implementação de função: é onde escrevemos o código da função.
- Modularização: é um padrão/técnica de projeto na qual "quebramos" a solução do problema em módulos. Veja mais detalhes na wikipedia aqui.