![]() |
|
Модераторы: bsa |
![]()
|
|
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Опасных тут нет. Нюансов много, но если все объявления пихать в хидер, а всю реализацию в cpp, то проблем у тебя никаких не будет. Нюансы начинаются с того момента, когда ты захочешь не все объявления пихать в хидер. Но к тому моменту, скорее всего, ты уже будешь о них знать по собственному опыту. |
|||
|
||||
| rudvil |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 20.11.2009 Где: Latvia/Riga Репутация: 1 Всего: 3 |
Тоже стало интерестно, а именно: я что-нибудь выйграю если разобью большой класс(без шаблонов, также он не будет использоваться как библиотека) на h/cpp.
--------------------
xor |
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
rudvil, куда больше Вы выиграете от того, что узнаете, что в 21 веке ручное разделения класса/модуля на интерфейс и реализацию не считается приличным.
С++ is so 90s! -------------------- |
|||
|
||||
| rudvil |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 20.11.2009 Где: Latvia/Riga Репутация: 1 Всего: 3 |
Вот оно что, а я то думал что boost все в *.hpp держит только из-за использования шаблонов. Спасибо что просветили --------------------
xor |
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
rudvil, боюсь Вы не поняли... Или может я уже чего-то не понимаю...
-------------------- |
|||
|
||||
| rudvil |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 20.11.2009 Где: Latvia/Riga Репутация: 1 Всего: 3 |
Да, я не совсем то написал, хотел сказать - что реализация как в яве
опять же если я правильно вас понял. Это сообщение отредактировал(а) rudvil - 12.9.2010, 21:42 --------------------
xor |
||||
|
|||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
rudvil, кстати, шаблонные классы разделять на обявление и реализацию не стоит - реализация шаблона должна быть доступна во всех единицах трансляции, где он используется.
|
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: нет Всего: 4 |
Простите за тупой вопрос... но собственно в чем вообще преимущество интерфейсов?
Читаю сейчас книгу освой с++ за 21 день, так так советуют интерфейс пихнуть в .hpp а реализацию оставить... Моя здравая логика говорит что - правильней наоборот... Когда человек открывает прогу и у него есть интерфейс struct класса, так ему понятно что функции делают... Это куда лучше чем смотреть 1000 строк кода реализации... |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
ты сам ответил
это, правда, не основное и не единственное преимущество. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| baldina |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
напрямую связано с понятием "раздельная компиляция", т.е. каждый cpp компилируется отдельно, и о содержимом других файлов проекта компилятор не подозревает (в других языках могут использоваться иные модели и правила, например сборки С#). для того, что бы использовать пользовательские типы и переменные, определенные где-то (возможно, в другом cpp), их надо предварительно объявить. что бы не делать это многократно, такие объявления помещают в отдельный файл (обычно с расширением .h) и включают его при помощи директивы include. это основное. дальше - детали, касаемые внешних и статических переменных и констант, inline функций (в т.ч. шаблонных) и прочая...
в любой книжке по С++ про это довольно доходчиво написано - Прата, Страуструп и иные... например тут Добавлено через 11 минут и 23 секунды объявление (declaration), требуемое перед использованием суть интерфейс (типа, переменной, функции, шаблона). определение (definition) - реализация. таким образом помещая объявления в заголовок мы разделяем интерфейс и реализацию. это другая сторона вопроса, чуть иной подход. таким образом механизмы и правила (хорошего тона) языка способствуют правильному подходу к программированию.
в том, что на телевизоре 4 кнопки (это интерфейс) и для его управления достаточно знать, что они делают, а не разбираться в электронной схеме (реализация) |
||||||
|
|||||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
при этом слова "где он используется" может означать не совсем ожидаемые вещи тут Это сообщение отредактировал(а) baldina - 13.9.2010, 15:31 |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 6 Всего: 162 |
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |