Как должна правильно выглядеть структура много файловой программа C++?

Я работаю в clion, и, при создании файла класса, среда создаёт .h файл и .cpp файл. Они содержат следующее:

A.h

#ifndef UNTITLED3_A_H
#define UNTITLED3_A_H


class A {
public:
    int test = 1;

};


#endif 

A.cpp

#include "A.h"

Я написал реализацию класса A в заголовочном файле, удалил .cpp и программа заработала. Тогда зачем среда создаёт .cpp файл? Что Я должен там описывать? Правильно ли я сделал, что написал реализацию в заголовочном файле? Так же хочу попросить рекомендации при написании много файловых программ на данном языке программирования.

Программа запускается без A.cpp

main.cpp

#include <iostream>
#include "A.h"
int main() {
    A a = A();
    std::cout << a.test;
    return 0;
}

Ответы (1 шт):

Автор решения: AR Hovsepyan

Разбиение программы на файлы помогает подчеркнуть ее логическую структуру, облегчает ее понимание другими и позволяет компилятору обеспечить эту логическую структуру. Когда единицей компиляции является файл, весь он должен быть заново перекомпилирован при внесении изменений (не зависимо от того, насколько они малы) в него или в другой файл, от которого он зависит. Ваша программа не нуждается в деталях реализации, поэтому их вы выносите в .cpp файл, дабы обеспечить вышесказанное. Конечно, при маленьком размере заголовочного файла(пару классов и пару функций), реализацию тривиальных классов и функций можно не разделять и прямо написать в заголовочном файле, но, обычно заголовочные файлы бывают большими, и реализации бывают далеко не тривиальными...

P.S. Во многих учебниках об этом написано более подробно...

→ Ссылка