Что не так с C++ приложением только для заголовков?

Мне интересно кодировать приложение C++ с макетом только для заголовка, как показано ниже:

// code3.h
#include <iostream>
class code3
{
public:
  void print()
  {
    std::cout << "hello " << std::endl;
  }
};

// code2.h
#include "code3.h"
class code2
{
public:
  void print()
  {
    code3 c;
    c.print();
  }
};

// code1.h
#include "code3.h"    
class code1
{
public:
  void print()
  {
    code3 c;
    c.print();
  }
};

// main.cpp
#include "code1.h"
#include "code2.h"

int main()
{
  code1 c1; 
  c1.print();

  code2 c2; 
  c2.print();
}

Единственный файл cpp будет основным файлом. Остальная часть кода будет размещена в заголовочных файлах.

Я хотел бы знать, есть ли какая-то проблема производительности с этим подходом. Я знаю, что определение методов в объявлениях класса приводит их в соответствие, но так как это будет только один файл cpp, встроенные методы не будут дублироваться. Я просто хочу сосредоточить свой вопрос на производительности. Я не говорю о расширяемости, удобочитаемости, обслуживании или чем-то еще. Я хочу знать, если я что-то упустил с этим подходом, который может вызвать проблемы с производительностью.

Спасибо!

2 ответа

В последний раз, когда я задавал этот вопрос, я получил ТОННО полезных ответов: http://www.daniweb.com/software-development/cpp/threads/423106/separate-headers-from-source

По сути, я спросил, почему я должен отделять свой источник от заголовков, потому что я также ненавидел иметь "лишние" файлы и переключаться между заголовком и источником. Я думаю, что ответы, которые я получил, могут быть полезны для вас, поэтому я просто оставлю эту ссылку выше.

Вы обнаружите, что это становится довольно непрактичным, когда ваш проект имеет несколько сотен файлов (или больше), и ВСЕ код должен быть перекомпилирован КАЖДЫЙ раз, когда вы что-то меняете.

В небольшом программном проекте нет особых причин иметь разные исходные файлы, но нет большого недостатка в наличии более одного исходного файла.

Когда в источнике появляется больше десятка файлов, время компиляции начинает увеличиваться. Также гораздо сложнее изолировать функциональные группы кода, что, в свою очередь, влияет на легкость, с которой вы можете взять один кусок кода и использовать его в другом проекте - что часто полезно при работе с кодом.

Другие вопросы по тегам