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

.h и .cpp файлы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Хулиган
 Аватар для Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
16.08.2013, 19:48     .h и .cpp файлы #1
Если я объявляю в одном .h файле 3 класса, то могу ли я сделать полное определение методов для 3 классов в одном .cpp файле?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ded_Vasilij
 Аватар для Ded_Vasilij
229 / 211 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
16.08.2013, 19:54     .h и .cpp файлы #2
Цитата Сообщение от Хулиган Посмотреть сообщение
то могу ли я сделать полное определение методов для 3 классов в одном .cpp файле?
А почему нет?
Хулиган
 Аватар для Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
16.08.2013, 19:56  [ТС]     .h и .cpp файлы #3
Цитата Сообщение от proger_55 Посмотреть сообщение
А почему нет?
та клемануло что то
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
16.08.2013, 20:07     .h и .cpp файлы #4
Главное в этом .cpp файле подключить .h файл

Добавлено через 1 минуту
А если классы шаблонные, то их определения должны быть в .h файле
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
16.08.2013, 20:52     .h и .cpp файлы #5
Цитата Сообщение от Хулиган Посмотреть сообщение
Если я объявляю в одном .h файле 3 класса
Главное, чтобы классы были как-то логически связаны. Иначе размещение их в одном модуле сомнительно.
castaway
Эксперт С++
4842 / 2981 / 367
Регистрация: 10.11.2010
Сообщений: 11,013
Записей в блоге: 10
Завершенные тесты: 1
16.08.2013, 21:30     .h и .cpp файлы #6
Цитата Сообщение от BigLow Посмотреть сообщение
то их определения должны быть в .h файле
.. и только в .h файле.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.08.2013, 00:56     .h и .cpp файлы #7
Солтер Н.А., Клепер С.Дж. "С++ для профессионалов."
Миниатюры
.h и .cpp файлы  
castaway
Эксперт С++
4842 / 2981 / 367
Регистрация: 10.11.2010
Сообщений: 11,013
Записей в блоге: 10
Завершенные тесты: 1
17.08.2013, 01:08     .h и .cpp файлы #8
Цитата Сообщение от Хулиган Посмотреть сообщение
Если я объявляю в одном .h файле 3 класса, то могу ли я сделать полное определение методов для 3 классов в одном .cpp файле?
Не то что можешь, ты либо обязан определить методы класса в отдельном .cpp файле, либо, если они шаблонные или inline - тогда в отдельном заголовочном файле.
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
17.08.2013, 11:46     .h и .cpp файлы #9
лично я работаю по правилу 1 класс = 1 файл h + 1 файл cpp(так их генерирует Eclipse CDT)
логически связанные классы помещаю в пакет, и название пакета использую в качестве namespace.
(так делает и Visual Paradigm при генерации кода)
стоит добавить, что такого стиля ещё ни у кого не встречал.
Хулиган
 Аватар для Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
17.08.2013, 12:07  [ТС]     .h и .cpp файлы #10
Цитата Сообщение от XRuZzz Посмотреть сообщение
1 класс = 1 файл h + 1 файл cpp
даже если есть пару классов на 8-15 строк? все равно отдельно?
XRuZzz
Антикодер
577 / 478 / 23
Регистрация: 15.09.2012
Сообщений: 2,429
17.08.2013, 13:53     .h и .cpp файлы #11
Цитата Сообщение от Хулиган Посмотреть сообщение
даже если есть пару классов на 8-15 строк? все равно отдельно?
это повод подумать правильно ли вы определили сущность для класса.

стоит посмотреть Фаулера "Рефакторинг" - правда мне не очень нравятся названия его классов, которые не имеют аналогов объектов в реальном мире

Добавлено через 6 минут
ну вот например абстрактные матрицы из математики тоже не имеют аналогов объектов в реальном мире, но это некие завершенные абстракции, которые описываются количеством строк кода около 1000

Добавлено через 3 минуты
в любом случае, когда я в этом форуме спрашивал про асбтрактные микроклассы типа Objects, Devices
Которые служили бы родителями для многих других классов, мне посоветовали их избегать. И я убедился, что они настолько абстрактны, что абсолютно бесмысленны.

Добавлено через 9 минут
Ключ наверно находится в том уровне, по которому вы определяете степень абстрактности класса. Классы не должны описывать объекты реального мира слишком абстрактно, настолько, что с ними не удобно было бы работать.
И не должны быть слишком конкретными, чтоб не использовать их для создания лишь одного объекта.

Пример класс Animals - в некоторых реализациях может быть слишком абстрактным, когда мы имеем большую классификацию животных.

В тоже время если мы работаем с предметной областью в которой есть собаки то вполне разумно создать класс Dogs
и очень не хорошо создавать слишком конкретный класс WhiteDogs.

Название класса иногда полезно сверять со англ статьёй в вики, чтоб понять что ваш класс делает именно то, что написано в статье вики про эту сущность.
Хулиган
 Аватар для Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
17.08.2013, 14:15  [ТС]     .h и .cpp файлы #12
Цитата Сообщение от XRuZzz Посмотреть сообщение
это повод подумать правильно ли вы определили сущность для класса.
а разве класс не может содержать 2-3 методов доступа к членам класса и 3-4 модификатора? (
Цитата Сообщение от XRuZzz Посмотреть сообщение
даже если есть пару классов на 8-15 строк?
это имелось ввиду только объявление всех методов и свойств
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.08.2013, 14:22     .h и .cpp файлы
Еще ссылки по теме:

Файлы .cpp и .h C++
Заголовочные файлы .h и .cpp C++
C++ Куда пропадают .cpp и .h файлы?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
XRuZzz
19.08.2013, 14:22     .h и .cpp файлы
  #13

Не по теме:

не хочется отвечать, лучше приведу цитату

All problems in computer science
can be solved by another level of indirection,
except for the problem of too many layers of indirection.
– David J. Wheeler

Yandex
Объявления
19.08.2013, 14:22     .h и .cpp файлы
Ответ Создать тему
Опции темы

Текущее время: 00:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru