Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> разделение кода на .h/.cpp 
:(
    Опции темы
bsa
Дата 9.9.2010, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(KuMa1104 @  9.9.2010,  00:10 Найти цитируемый пост)
Хм. дауж много опасных нюансов.

Опасных тут нет. Нюансов много, но если все объявления пихать в хидер, а всю реализацию в cpp, то проблем у тебя никаких не будет. Нюансы начинаются с того момента, когда ты захочешь не все объявления пихать в хидер. Но к тому моменту, скорее всего, ты уже будешь о них знать по собственному опыту.
PM   Вверх
rudvil
Дата 12.9.2010, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 20.11.2009
Где: Latvia/Riga

Репутация: 1
Всего: 3



Тоже стало интерестно, а именно: я что-нибудь выйграю если разобью большой класс(без шаблонов, также он не будет использоваться как библиотека) на h/cpp.
--------------------
xor
PM MAIL Skype   Вверх
kemiisto
Дата 12.9.2010, 17:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 5
Всего: 160



rudvil, куда больше Вы выиграете от того, что узнаете, что в 21 веке ручное разделения класса/модуля на интерфейс и реализацию не считается приличным. 

С++ is so 90s! smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
rudvil
Дата 12.9.2010, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 20.11.2009
Где: Latvia/Riga

Репутация: 1
Всего: 3



Цитата(kemiisto @ 12.9.2010,  17:40)
rudvil, куда больше Вы выиграете от того, что узнаете, что в 21 веке ручное разделения класса/модуля на интерфейс и реализацию не считается приличным. 

С++ is so 90s! smile

Вот оно что, а я то думал что boost все в *.hpp держит только из-за использования шаблонов.
Спасибо что просветили  smile
--------------------
xor
PM MAIL Skype   Вверх
kemiisto
Дата 12.9.2010, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 5
Всего: 160



rudvil, боюсь Вы не поняли... Или может я уже чего-то не понимаю... smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
rudvil
Дата 12.9.2010, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 20.11.2009
Где: Latvia/Riga

Репутация: 1
Всего: 3



Цитата(kemiisto @ 12.9.2010,  18:29)
rudvil, боюсь Вы не поняли... Или может я уже чего-то не понимаю... smile

Да, я не совсем то написал, хотел сказать - что реализация как в яве  smile  т.е. без
Цитата
разделения класса/модуля на интерфейс и реализацию

опять же если я правильно вас понял.

Это сообщение отредактировал(а) rudvil - 12.9.2010, 21:42
--------------------
xor
PM MAIL Skype   Вверх
bsa
Дата 12.9.2010, 21:49 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



rudvil, кстати, шаблонные классы разделять на обявление и реализацию не стоит - реализация шаблона должна быть доступна во всех единицах трансляции, где он используется.
PM   Вверх
Muerto
Дата 13.9.2010, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: нет
Всего: 4



Простите за тупой вопрос... но собственно в чем вообще преимущество интерфейсов?

Читаю сейчас книгу освой с++ за 21 день, так так советуют интерфейс пихнуть в .hpp а реализацию оставить...
Моя здравая логика говорит что - правильней наоборот...
Когда человек открывает прогу и у него есть интерфейс struct класса, так ему понятно что функции делают...

Это куда лучше чем смотреть 1000 строк кода реализации...


--------------------
user posted image
PM MAIL   Вверх
borisbn
Дата 13.9.2010, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 21
Всего: 135



Цитата(Muerto @  13.9.2010,  12:01 Найти цитируемый пост)
 но собственно в чем вообще преимущество интерфейсов?

ты сам ответил
Цитата(Muerto @  13.9.2010,  12:01 Найти цитируемый пост)
Когда человек открывает прогу и у него есть интерфейс struct класса, так ему понятно что функции делают...Это куда лучше чем смотреть 1000 строк кода реализации...

это, правда, не основное и не единственное преимущество.


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
baldina
Дата 13.9.2010, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



Цитата

разделение кода на .h/.cpp

напрямую связано с понятием "раздельная компиляция", т.е. каждый cpp компилируется отдельно, и о содержимом других файлов проекта компилятор не подозревает (в других языках могут использоваться иные модели и правила, например сборки С#). 

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

Цитата

ссылочку на статью в которои доходчиво описывается разделение кода на .h/.cpp

в любой книжке по С++ про это довольно доходчиво написано - Прата, Страуструп и иные...
например тут

Добавлено через 11 минут и 23 секунды
объявление (declaration), требуемое перед использованием суть интерфейс (типа, переменной, функции, шаблона). определение (definition) - реализация. таким образом помещая объявления в заголовок мы разделяем интерфейс и реализацию. это другая сторона вопроса, чуть иной подход. таким образом механизмы и правила (хорошего тона) языка способствуют правильному подходу к программированию.
Цитата

но собственно в чем вообще преимущество интерфейсов?

в том, что на телевизоре 4 кнопки (это интерфейс) и для его управления достаточно знать, что они делают, а не разбираться в электронной схеме (реализация)
PM MAIL   Вверх
baldina
Дата 13.9.2010, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



Цитата(bsa @ 12.9.2010,  21:49)
rudvil, кстати, шаблонные классы разделять на обявление и реализацию не стоит - реализация шаблона должна быть доступна во всех единицах трансляции, где он используется.

при этом слова "где он используется" может означать не совсем ожидаемые вещи smile

тут

Это сообщение отредактировал(а) baldina - 13.9.2010, 15:31
PM MAIL   Вверх
JackYF
Дата 15.9.2010, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 6
Всего: 162




 ! 
JackYF
Оффтопик ушёл в раздел "Общие вопросы".



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0558 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.