![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Wowa |
|
||||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Функция определена в классе, а тело функции находится вне класса.
Почему так делают? Или жетело функции располагают в:
Разве так удобно? Имхо гораздо удобнее в public, pivate, protected описать только по-определять функции, а снизу в этом же классе уже изложить сами функции. Такое возможно? А то я видел только еще такой вариант:
PS. За синтаксис не ручаюсь |
||||
|
|||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
class name {
public: void funktion() {тело}; } это делается если тело функции -- пара строк ( например: ... public: ... int getId() {return id; }; ) >>Разве так удобно? мне -- удобно >>Имхо гораздо удобнее в public, pivate, protected описать только по-определять функции, а снизу в этом же классе уже изложить сами функции. это из Java? >>А то я видел только еще такой вариант: class name { public: void funktion(); } name::function () { } так можно ( только реализацию в .cpp вынести нужно ) -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Wowa |
|
||||||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
А поподробнее можно? Разве классы не в .cpp создавать надо?
А если не пару строк, то как поступать?
Хм.. из логики Ведь если мы имеем обычную программу(не ООП), то в самом начале мы задаем список функций, которые есть в программе, а снизу сами функции. |
||||||
|
|||||||
| bel_nikita |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Admin
Это уже дело вкуса и стиля программиования Если функция объявлена и определена в *.Н - это inline функция. Вот, такое будет говорить компилятору, что это инлайн функция:
Но в тоже время, это не факт, что она 100% будет инлайн. Это будет решать компилятор З.Ы.: Не знаю, что-то написал. Если не понятно, извиняйте Добавлено @ 14:26
Можно |
||||||
|
|||||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Функции лучше создавать в файлах с расширением .h, а не .cpp ?
|
|||
|
||||
| _hunter |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
классы _создаются_ в двух местах: в .h файле идет описание:
а в .cpp идет реализация:
про джаву упомянул так как там используют однофайловую структуру ( очень похожую на описанную ) Это сообщение отредактировал(а) _hunter - 14.12.2004, 14:33 -------------------- Tempora mutantur, et nos mutamur in illis... |
||||||
|
|||||||
| srd |
|
||||
![]() Нереварин ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 951 Регистрация: 30.8.2003 Где: Владивосток Репутация: 27 Всего: 49 |
Не факт, что 100% Вот это компилятор встроить не сможет
-------------------- Не смей читать мою подпись!!! |
||||
|
|||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Admin
Нннн-ет. Все же лучше в *.cpp ИМХО: если класс маленький, т.е. с парой-другой коротеньких функция, то лучше все запихнуть в *.h |
|||
|
||||
| Wowa |
|
||||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
ага..., вот как интересно... Оказывается все-таки стандартом в С++ является разделение описания и реализации класса. Теперь все сильно проясняется. Добавлено @ 14:35
И при этом реализацию функий делать прямо в секции public, private или protected? |
||||
|
|||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
соответственно _маленькие_ функции ( выполняющие _понятные_ действия ) лучше писать в опимании класса, остальные -- выносить в реализацию
но, как уже упоминали, это все дело стиля -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
А по другому не дано? Т.е. делать реализацию внутри класса, но не в описании?
|
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 16 Всего: 98 |
не в секции, а именно в месте определения:
-------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 1 Всего: 23 |
Если описание класса делать в заголовочном файле h, а реализацию - в cpp, это даёт возможность без проблем использовать наш класс в других наших программах, где нужно будет только включить наш заголовочный файл.
А вот когда создали Object Pascal, то там это реализовали путем введения областей interface и implementation. Видимо, если модуль с описанием класса используется в других модулях, то компилятор ориентируется лишь в interface области кода. |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Представь, тебе надо написать интерфейс. Короче говоря класс который потом будет
использоваться тобой же или другим программистом. Если написать все в Header -е то тебе придется все include-ы которые будет использовать твой класс пихать в свой header файл...А теперь представь что тому программисту который будет использовать твой интерфейс совсем неохота чтоб у него в программе после инклуда твоего .h файла появился например list или stdio.h хотя бы потому что list это девичья фамилия его тещи которая так ненавящиво напоминает ему что новый год хочешь не хочешь а придется провести с вышеупомянутой родственницей да еще и поздравлять ее с праздником и целовать ее прыщавую физиономию..ну не любит он тещю, бывает такое...а ты как бы заставляешь его инклудить все то что нужно тебе, а быть может совсем не нужно ему...(вполне возможно что у него тоже есть класс list или функция принтф)... Вобщем ВСЕ функции желательно писать в CPP файле... |
|||
|
||||
| NiJazz |
|
|||
![]() Jazz coder ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2286 Регистрация: 10.8.2003 Где: Москва Репутация: 1 Всего: 23 |
Представляете, если бы книги так писали. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |