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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
#1

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

16.08.2013, 19:48. Просмотров 1578. Ответов 12
Метки нет (Все метки)

Если я объявляю в одном .h файле 3 класса, то могу ли я сделать полное определение методов для 3 классов в одном .cpp файле?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.08.2013, 19:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос .h и .cpp файлы (C++):

Заголовочные файлы и файлы cpp - C++
Со временем сложилось представление что при написании программ стоит разделять МЕТА данные и данные, но для лучшего понимания своих...

Файлы .h и .cpp - C++
Мне надо подключить несколько файлов к проекту. Какие надо использовать .h или .cpp ? И вообще какая между ними разница???

Файлы .cpp и .h - C++
Добрый день! Подскажите, пожалуйста, как в программу добавить файлы .cpp и .h? Эти файлы уже написаны и их осталось только подключить к...

Заголовочные файлы .h и .cpp - C++
Создаю библиотеку для работы с матрицами (функции): matrix.cpp: namespace MatrixFuncs { double...

Разбить main.cpp на файлы - C++
Есть вот такой main.cpp: #include <stdlib.h> #include <iostream> #include <string.h> //#include <stdint.h> //#include <limits.h> ...

Разделение кода на cpp и h файлы - C++
Добрый день. Расскажите, пожалуйста, как разделить код на два файла cpp и файл h. #include <iostream> #include <conio.h> using...

12
Ded_Vasilij
231 / 213 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
16.08.2013, 19:54 #2
Цитата Сообщение от Хулиган Посмотреть сообщение
то могу ли я сделать полное определение методов для 3 классов в одном .cpp файле?
А почему нет?
0
Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
16.08.2013, 19:56  [ТС] #3
Цитата Сообщение от proger_55 Посмотреть сообщение
А почему нет?
та клемануло что то
0
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
16.08.2013, 20:07 #4
Главное в этом .cpp файле подключить .h файл

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

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

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

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

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

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

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

Название класса иногда полезно сверять со англ статьёй в вики, чтоб понять что ваш класс делает именно то, что написано в статье вики про эту сущность.
0
Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
17.08.2013, 14:15  [ТС] #12
Цитата Сообщение от XRuZzz Посмотреть сообщение
это повод подумать правильно ли вы определили сущность для класса.
а разве класс не может содержать 2-3 методов доступа к членам класса и 3-4 модификатора? (
Цитата Сообщение от XRuZzz Посмотреть сообщение
даже если есть пару классов на 8-15 строк?
это имелось ввиду только объявление всех методов и свойств
0
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

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.08.2013, 14:22
Привет! Вот еще темы с ответами:

Куда пропадают .cpp и .h файлы? - C++
Вопрос следующий... Вот например есть программа winrar-архиватор. При разработке этой программы в проекте присутствовали .cpp и .h фалы....

dev cpp не хочет открывать файлы(( - C++
fstream in("test.in"); cout << in.is_open(); выдает 0, хоть стреляйся.. файл в папке программы лежит добавлять флаги...

Не могу разделить template метод в .h и .cpp файлы - C++
Писал для проверки мини прогу, там все работает: class.h #pragma once #include <Windows.h> class Class { public: ...

Востановить файлы .cpp и .h из проекта с DiskDigger 1.6.0.1571 ? - C++
Не знаю, стоит ли точно этим заниматься. Вчера папа как-то умудрился удалить файлы .cpp и .h из проекта визуал студии 2010. Он хотел...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru