Итак, вопрос в том, хуже ли этот метод, чем использование заголовочных файлов?
Возможно, вы рассмотрите основную идею о том, что такое «единица перевода C ++».
В вашем примере препроцессор работает так, как будто он вставляет копию foo.cpp во внутреннюю копию main.cpp.Препроцессор делает это, а не компилятор.
Итак ... компилятор никогда не видит ваш код, когда они были отдельными файлами.Именно этот объединенный «блок перевода» передается компилятору.В .hh и .cc нет ничего волшебного, кроме того, что они соответствуют ожиданиям вашего сверстника (или босса).
Теперь подумайте над вашим вопросом ... блок перевода не относится ни к вашим исходным файлам, ни к каким-либоваша система включает файлы, но это один поток текста, одна вещь, собранная препроцессором.Так как это будет лучше или хуже?
Это намного проще и намного чище,
Это может быть.Я часто использую этот «другой» подход в своих «частных» работах по кодированию.
Когда я быстро оценил использование gmpxx.h (mpz_class) в факториале, я действительно использовал только такие виды ярлыков и не нуждался в файле .hpp для правильного создания модуля компиляции.К вашему сведению - Факториал 12345, более 45 000 байтов.Чтение символов также бессмысленно.
«Более формальное» усилие (работа, сотрудничество и т. Д.), Я всегда использую заголовки и отдельную компиляцию, а также создаю библиотеку функций, полезных для приложения.как часть того, как все должно быть сделано.Особенно, если я мог бы поделиться этим кодом или внести свой вклад в архивы компаний.У меня слишком много веских причин, чтобы описать, почему я рекомендую вам изучить эти вопросы.
но медленнее ли это, вызывает больше ошибок и т.д.?
Я думаю, что нет.Думаю, нет.Есть одна единица компиляции, и объединение частей должно быть правильным, но я думаю, что не сложнее.
Я давно искал эту тему, но у меня нетне видел ни одной темы в интернете, рассматривая это даже как вариант ...
Я не уверен, что я когда-либо видел, чтобы это тоже обсуждалось.Я получил информацию.Отдельные компиляции и разработка библиотеки, как правило, воспринимаются как экономия времени на разработку.(Время - деньги, верно?)
Кроме того, библиотека и файлы заголовков - это то, как вы упакуете свой успех для использования другими людьми, как вы можете повысить свою ценность для команды.