erro de múltiplas definições em c ++ e solução para resolver este problema

Eu sou novo no C ++. Eu tenho algumas dúvidas sobre o erro de múltiplas definições em C ++.

Digamos que eu tenha 3 arquivos em um programa. Um arquivo de cabeçalho e 2 arquivos .cpp. Eu incluí o arquivo de cabeçalho em ambos os arquivos .cpp.

Eu declarei uma classe no arquivo de cabeçalho e defini a classe em cada um dos arquivos .cpp exatamente da mesma maneira. Então este tipo de implementação causará erro de múltiplas definições? Em caso afirmativo, é porque tem duas cópias de definições de classe e o compilador não sabe qual delas tomar durante a vinculação de dois arquivos .o?

Podemos resolver esse problema usandoextern no arquivo de cabeçalho e definindo a classe em apenas um dos arquivos? Se podemos resolver o problema usando esse método, temos que incluir o .cpp (com definição de classe) em outro arquivo .cpp (sem definição de classe)?

Eu declarei e defini uma classe no arquivo de cabeçalho. Este caso é o mesmo que acima (mencionado em 1)?

Eu declarei uma classe no arquivo de cabeçalho e defini a classe em cada um dos arquivos .cpp, mas as definições (corpos de função) diferem. Então, esse tipo de implementação causa várias definições de erro? Em caso afirmativo, como podemos resolver esse problema quando os corpos de funções diferem nos arquivos .cpp?

questionAnswers(4)

yourAnswerToTheQuestion