Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.192] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 26 27 [28] 29 30 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#406
,
|
|
|
|
Тебе показалось ![]() Цитата KILLER @ Какой тогда прок от ваших модулей, если все что ты тут перечислил без проблем реализуется с помощью неймспейсов ? Не подменяй вопрос, он был другой. Модули с классами сопоставлялись, где класс берет на себя роль пространства имен. Но отвечу что такого хорошего в наших модулях 1. Модуль - это единица компиляции 2. Разделение интерфейса от реализации (вот если бы это было в C# - я бы значительно меньше имел против него, но мне очень не нравится необходимость писать код прямо внутри объявления класса) 3. Возможность объявить implementation-only идентификаторы (функции, переменные, типы) 4. initialization/finalization-секции. Классовые конструкторы/деструкторы не заменяют эти возможности, но могут удачно дополнять. |
|
Сообщ.
#407
,
|
|
|
|
Цитата --Ins-- @ Не подменяй вопрос, он был другой. Модули с классами сопоставлялись, где класс берет на себя роль пространства имен. Не ну понимаешь, конечно можно сравнить запорожец с двигателем от бэхи, и сказать что запорожец круче, потому что умеет ездить... Но нужно ведь понимать вопрос... Цитата --Ins-- @ Но отвечу что такого хорошего в наших модулях 1. Модуль - это единица компиляции 2. Разделение интерфейса от реализации (вот если бы это было в C# - я бы значительно меньше имел против него, но мне очень не нравится необходимость писать код прямо внутри объявления класса) 3. Возможность объявить implementation-only идентификаторы (функции, переменные, типы) 4. initialization/finalization-секции. Классовые конструкторы/деструкторы не заменяют эти возможности, но могут удачно дополнять. В принципе первые три пункта меня мало инетерсуют, так как С++ имеет такие возможности, а вот по 4 пункту было бы интересно послушать, что это за initialization/finalization-секции такие, для чего используются ? |
|
Сообщ.
#408
,
|
|
|
|
Цитата KILLER @ Да ты не кипятись так. Какой тогда прок от ваших модулей, если все что ты тут перечислил без проблем реализуется с помощью неймспейсов ??? Немспейс - содержит объявления и реализации, то есть все то что нужно. разве нэймспейсы в C++ уже умеют разделять интерфейс и реализацию? |
|
Сообщ.
#409
,
|
|
|
|
Цитата KILLER @ бы интересно послушать, что это за initialization/finalization-секции такие, для чего используются ? В гугле забанили? Я по вечерам субботы уроки не даю |
|
Сообщ.
#410
,
|
|
|
|
Цитата korvin @ разве нэймспейсы в C++ уже умеют разделять интерфейс и реализацию? интерфейс как правило располагается в заголовочном *.h файле, имплементация в *.cpp, также можно скрывать в имплементации некоторые локальные типы, чтобы не иметь к ним доступа из вне. А неймспейс - это как бы оболочка чтоли, тоесть описывается для того чтобы иметь имя "модуля" через которое можно обратится к типам/объектам описаным внутри. |
|
Сообщ.
#411
,
|
|
|
|
Цитата KILLER @ что это за initialization/finalization-секции такие, для чего используются ? код в этих секциях выполняется при загрузке и выгрузке модуля соответственно |
|
Сообщ.
#412
,
|
|
|
|
Цитата --Ins-- @ В гугле забанили? Я по вечерам субботы уроки не даю ![]() Ааа, то есть теперь, мы за всеми аргументами и пояснениями будем посылать в гугл? Добавлено Цитата korvin @ код в этих секциях выполняется при загрузке и выгрузке модуля соответственно Вот я и спрашиваю, что в нем можно расположить то ? Непонял я смысла этих секций. |
|
Сообщ.
#413
,
|
|
|
|
Цитата korvin @ разве нэймспейсы в C++ уже умеют разделять интерфейс и реализацию? Нет, ес-но, собственно C# ведь C++-ный синтаксис и тянет. Это, конечно, вопрос исключительно синтаксиса, но вопрос на самом деле серьезный. Насколько удобно иметь перед глазами отдельно объявление класса и всех его методов, чтобы реализация не путалась перед глазами. В таких случаях в 90% и документация класса не нужна. Все читаешь и понимаешь по исходникам Добавлено Цитата KILLER @ мы за всеми аргументами и пояснениями будем посылать в гугл? Нет, только за базовыми понятиями, которые есть в каждом учебнике и элементарно гуглятся |
|
Сообщ.
#414
,
|
|
|
|
Цитата KILLER @ интерфейс как правило располагается в заголовочном *.h файле, имплементация в *.cpp, также можно скрывать в имплементации некоторые локальные типы, чтобы не иметь к ним доступа из вне. А неймспейс - это как бы оболочка чтоли, тоесть описывается для того чтобы иметь имя "модуля" через которое можно обратится к типам/объектам описаным внутри. напрягает вот это "как правило", т.е. никаких гарантий, что все так делают. ну так неймспейс-то такую возможность не предоставляет Добавлено Цитата KILLER @ Вот я и спрашиваю, что в нем можно расположить то ? Непонял я смысла этих секций. да что угодно, считай эти секции конструктором и деструктором соответственно |
|
Сообщ.
#415
,
|
|
|
|
Цитата --Ins-- @ Нет, только за базовыми понятиями, которые есть в каждом учебнике и элементарно гуглятся ![]() Я понял для чего они нужны из их названия если что, меня интересовало что в них описывать? Ну вот объявил я функцию, или тип свой, нахера мне эти секции сдались???? ЧТо я в них буду деструктор класса вручную вызывать или как? Цитата korvin @ напрягает вот это "как правило", т.е. никаких гарантий, что все так делают. Как правило я сказал к тому, что часто используют еще файлы с расширением *.hxx/*.cxx для описания шаблонов... А так, гарантий конечно нету, но все этому правилу следуют без исключения, а так это из серии: какие гарантии что я клиенту программу напишу, если он мне уже заплатил... Цитата korvin @ ну так неймспейс-то такую возможность не предоставляет Какую такую? Добавлено Цитата korvin @ да что угодно, считай эти секции конструктором и деструктором соответственно Для чего? Примером можно? Я в них смысла просто не вижу |
|
Сообщ.
#416
,
|
|
|
|
Цитата KILLER @ ЧТо я в них буду деструктор класса вручную вызывать или как? любая инициализация переменных уровня модуля. |
|
Сообщ.
#417
,
|
|
|
|
Цитата korvin @ любая инициализация переменных уровня модуля. т.е. глобальных переменых как я понимаю? Так а зачем мне оно в С++ нужно? Если все глобальные/статические переменные в С++ создаются автоматически на этапе запуска приложения, и я их при описании сразу же могу инициализировать, а удаляются во время его завершения. Мне видица только одно практическое применение, писать в этих секциях что то типо WriteLn("Module1 is initialized");/WriteLn("Module1 is finalized"); Только толку от этого? Добавлено А кстати в делфи глобальные/статическе переменые уровня модуля как я понял сами не удаляются и поэтому приходится их вручную удалять в секции finalize модуля или как? |
|
Сообщ.
#418
,
|
|
|
|
Цитата KILLER @ Если все глобальные/статические переменные в С++ создаются автоматически на этапе запуска приложения, а удаляются во время его завершения. Интересно, а кто их инициализирует? Добавлено Цитата KILLER @ А кстати в делфи глобальные/статическе переменые уровня модуля как я понял сами не удаляются и поэтому приходится их вручную удалять в секции finalize модуля или как? Нет, удаляются. |
|
Сообщ.
#419
,
|
|
|
|
Цитата DesweR @ Интересно, а кто их инициализирует? я же вроде написал, что при необходимости я сам могу задать начальное значение, если не задавать то автоматом значения глобальных/статических переменных будут обнулены. Добавлено DesweR, может быть ты мне пояснишь практическую ценность этих секций? |
|
Сообщ.
#420
,
|
|
|
|
Цитата KILLER @ Мне видица только одно практическое применение, писать в этих секциях что то типо WriteLn("Module1 is initialized");/WriteLn("Module1 is finalized"); Только толку от этого? Можешь зарегистрировать сообщения, установить обработчик исключений, подменить менеджер памяти, инициализировать пул потоков, да вообще что угодно. |