Когда исходный файл c ++ компилируется, первый этап, который он проходит, - это предварительная обработка.Когда директива включения достигнута, файл найден, и все содержимое файла, что бы это ни было, включается в исходный файл, как если бы оно было записано в самом исходном файле.
Вы будетевозможность определить любую функцию из класса в любом исходном файле, который включает в себя объявление класса, это исходный файл, «зная» о классе / функции ».
Также не требуется, чтобы содержимое заголовка иисходный файл будет иметь какие-либо отношения. Однако это считается очень хорошей практикой.
Реализация каждой единицы компиляции (исходного файла) компилируется независимо. Любое определение функции может быть помещено в любую единицу компиляции,и это не имело бы никакого значения. Когда блоки компиляции связаны друг с другом, использование каждого объявления сопоставляется со всеми определениями.
Единственный другой шаблон, который некоторые люди могут использовать, кроме отношения 1: 1 междуисходные файлыФайлы заголовков nd (о которых я могу думать) состоят в том, что каждый из файлов заголовков описывает класс, и каждый исходный файл реализует набор связанных функций.Но это плохая идея (на мой взгляд), потому что она будет стимулировать определения различных классов, потому что они сильно связаны.