Форум программистов, компьютерный форум CyberForum.ru

реализация класса в .h файле хорошо или плохо? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка с полем в классе http://www.cyberforum.ru/cpp-beginners/thread939514.html
Пишу класс.Сюда его выкладывать не хочу,ибо он достаточно обширный.В классе доступе private задаю поле дескриптора файла.Тоесть что-то типо того: Class Myclass { private: HANDLE file; ... public: ... };
C++ Сообщения между win32 приложениями Как отправить сообщение (аналог системных типа WM_DESTROY только свои) и обработать приемником? приёмник это обычное консольное win32 приложение(когда в визуале пустой проект win32 создаешь) http://www.cyberforum.ru/cpp-beginners/thread939505.html
Как назвать классы? C++
Сразу замечу, что дело происходит в 2D без физики, как таковой. 1) У меня есть классы: Mixer - звуковой движок Graphics - графический движок У звукового движка есть базовый класс: MixerPrimitiveType (некоторая инфа для воспроизведения) от которого наследюутся:
C++ Не удается подключить к приложению gtest и свою статическую либу VS 2010
Здравствуйте, господа. Возникла проблема с линкером в VS 2010 после подключения к консольному приложению собственной же статической библиотеки. В солюшене 2 проекта: 1 - статическая библиотека, 2 - приложение для тестов её функций, к этому приложению подключен gtest через его статическую либу. В 1-м проекте статической библиотеки имеется h-ник с API этой либы. Так как API может оперировать...
C++ Консоль для ведения логов http://www.cyberforum.ru/cpp-beginners/thread939483.html
Не уверен, что пишу туда, куда нужно, но есть только один способ узнать. Интересуют существующие решения по сабжу. Требования простые: - Минимум зависимостей - Цветной текст и фон - Динамические фильтры записей - Много буков - Желательно, отдельный поток и кеширование на диск - Картинки и ссылки приветствуются
C++ Крутящееся колесо Может ли кто написать (срочно) программу крутящееся колесо, исходник чтобы был с комментариями. подробнее

Показать сообщение отдельно
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16824 / 5245 / 320
Регистрация: 30.03.2009
Сообщений: 14,125
Записей в блоге: 26
19.08.2013, 12:23     реализация класса в .h файле хорошо или плохо?
Почему в Си++ реализации классов выносят в заголовочные файлы? Все очень просто. Тело метода класса, определённое внутри описания класса, является inline. Реализации многих шаблонов (в том числе и стандартных контейнеров) основаны на том, что после инстанциации шаблона компилятор видит все конструкторы, деструкторы, методы и весь тот хлам, что подцепится в процессе инстанциации. Дальше компилятор сделает длинный паровоз из inline'ов, после чего код, расположенный в тексте в виде 100500 различных функций и методов, в машинном коде окажется коротким и быстрым. Именно ради производительности разработчики Си++ особое внимание уделили inline'у. Ничего не бывает бесплатно, а потому производительность кода сопровождается медленной компиляцией и всеми прелестями, растущими от необходимости перекомпиляции проекта при изменении одного несчастного inline-метода класса.

Как поступать при написании самодельных классов? Все короткие методы/конструкторы/деструкторы имеет смысл написать внутри класса (или снаружи, но с модификатором inline) в заголовочном файле. В эту категорию включаются все Set/Get'ы. Длинные и тяжёлые методы, которые незачем inline'ить, лучше реализовывать в файлах *.cpp

Добавлено через 1 минуту
Цитата Сообщение от fasked Посмотреть сообщение
Опять же, make не настолько умен, чтобы самостоятельно определить зависимости и не способен пересобрать все зависимые файлы
Для этого пользуются специальными нанотехнологиями: либо строят всезависимости ручками. либо используют автоматические средства типа таких: Makefile: как с использованием gcc строить автоматические зависимости от .h файлов?
 
Текущее время: 23:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru