Мне интересно кодировать приложение 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, встроенные методы не будут дублироваться.
Я просто хочу сосредоточить свой вопрос на производительности. Я не говорю о расширяемости, удобочитаемости, обслуживании или чем-то еще. Я хочу знать, если я что-то упустил с этим подходом, который может вызвать проблемы с производительностью.
Спасибо!
Вы обнаружите, что это становится довольно непрактичным, когда в вашем проекте несколько сотен файлов (или более), и ВСЕ код должен быть перекомпилирован КАЖДЫЙ раз, когда вы что-то меняете.
В небольшом программном проекте нет особых причин иметь разные исходные файлы, но нет большого недостатка в наличии более одного исходного файла.
Когда в источнике появляется больше десятка файлов, время компиляции начинает увеличиваться. Также намного сложнее изолировать функциональные группы кода, что в свою очередь влияет на легкость, с которой вы можете взять один кусок кода и использовать его в другом проекте — что часто полезно при работе с кодом.
В прошлый раз, когда я задавал этот вопрос, я получил ТОННУ полезных ответов: http://www.daniweb.com/software-development/cpp/threads/423106/separate-headers-from-source
По сути, я спросил, почему я должен отделять свой источник от заголовков, потому что я также ненавидел иметь «лишние» файлы и переключаться между заголовком и источником. Я думаю, что ответы, которые я получил, могут быть полезны для вас, поэтому я просто оставлю эту ссылку выше.