Как должна правильно выглядеть структура много файловой программа 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 шт):
Разбиение программы на файлы помогает подчеркнуть ее логическую структуру, облегчает ее понимание другими и позволяет компилятору обеспечить эту логическую структуру. Когда единицей компиляции является файл, весь он должен быть заново перекомпилирован при внесении изменений (не зависимо от того, насколько они малы) в него или в другой файл, от которого
он зависит. Ваша программа не нуждается в деталях реализации, поэтому их вы выносите в .cpp файл, дабы обеспечить вышесказанное. Конечно, при маленьком размере заголовочного файла(пару классов и пару функций), реализацию тривиальных классов и функций можно не разделять и прямо написать в заголовочном файле, но, обычно заголовочные файлы бывают большими, и реализации бывают далеко не тривиальными...
P.S. Во многих учебниках об этом написано более подробно...