|
|
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
Алексей К LordMAD Алексей КНука, нука, где там в стандарте есть ключевое слово override???А проблема в том, что нужно именно это слово?Да зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2007, 22:23 |
|
||
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
Алексей К LordMAD Алексей КНука, нука, где там в стандарте есть ключевое слово override???А проблема в том, что нужно именно это слово?ДаЧтобы было больше проблем при рефакторинге, связанном с выделением нового предка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2007, 22:39 |
|
||
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
Алексей К egorych Bigger Алексей КДаже не знаю, стоит ли тут упоминать о скорости компиляции С++ и о том, как это влияет на скорость разработки в целом. Скорость компиляции влияет на скорость разработки - это 5 ну они-же хидеров руками не набирают... кучу времени съэкономили на этом - стала влиять скорость компиляцииА теперь помнож среднее время компиляции на количество компиляций в день (неделю, месяц) и покажи эти цифры своему начальнику, умник. И скажи ему, что всё это время ты сидишь на работе, и тупо ничего не делаешь. SpookiДа ну, какие споры. Этож детсад. Понятно, что программы пишут в моем понимание программисты (это С/C++), а остальные это асу с элементами программирования на всяком кале."Что это было???" (с) Особенности ... Компиляцию можно распараллелить ... С линковкой проблемм больше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 02:29 |
|
||
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
LordMAD Алексей К LordMAD Алексей КНука, нука, где там в стандарте есть ключевое слово override???А проблема в том, что нужно именно это слово?ДаЧтобы было больше проблем при рефакторинге, связанном с выделением нового предка?Чтобы можно было явно указать, что я хочу именно перекрыть виртуальную функцию базового класса, и чтобы компилятор контролировал чтот процесс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 10:13 |
|
||
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
Опять же расстраивает отсутствие base. Приходится писать в классе приватный typedef <Имя базового класса> base; В противном случае при смене базового класса сами понимаете что может произойти. Ну и указатели на нестатические функции, есть они где-нибудь кроме С++ Builder? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 10:21 |
|
||
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
LordMADЧтобы было больше проблем при рефакторинге, связанном с выделением нового предка?Какие проблемы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 10:23 |
|
||
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
Алексей КОпять же расстраивает отсутствие base. Приходится писать в классе приватный typedef <Имя базового класса> base; В противном случае при смене базового класса сами понимаете что может произойти.Ты только умолчал про: typedef <Имя базового класса 1> base1; typedef <Имя базового класса 2> base2; Алексей КНу и указатели на нестатические функции, есть они где-нибудь кроме С++ Builder?Они есть в стандарте C++ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 11:46 |
|
||
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
Алексей К LordMADЧтобы было больше проблем при рефакторинге, связанном с выделением нового предка?Какие проблемы?Писать автоматом override или не писать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 11:50 |
|
||
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
LordMAD Алексей КОпять же расстраивает отсутствие base. Приходится писать в классе приватный typedef <Имя базового класса> base; В противном случае при смене базового класса сами понимаете что может произойти.Ты только умолчал про: typedef <Имя базового класса 1> base1; typedef <Имя базового класса 2> base2; Ты меня не понял. Имеется ввиду именно указание предыдущего класса в иерархии наследования, относительно текущего. Часто требуется при вызове виртуальных функций. Если в данном случае не использовать typedef при смене базового класса придётся менять все ссылки на него. Их может быть довольно много. LordMAD Алексей КНу и указатели на нестатические функции, есть они где-нибудь кроме С++ Builder?Они есть в стандарте C++Почему тогда "это" в С++ Builder сделано через модификатор __closure, которого нет в стандарте? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 14:18 |
|
||
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
LordMAD Алексей К LordMADЧтобы было больше проблем при рефакторинге, связанном с выделением нового предка?Какие проблемы?Писать автоматом override или не писать.Представьте ситуацию, когда в базовом классе после рефакторинга пропадает виртуальная функция, которая была перекрыта в производных классах. В C# в данной ситуации компилятор выдаст ошибку. В С++ компилятор "схавает" такой код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 14:26 |
|
||
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
Хотим перекрыть виртуальную функцию и ошибаемся в одной букве. Тоже может быть довольно неприятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 14:29 |
|
||
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
LordMADПосмотрите по той ссылке, которую я давал ранее, softwarer на примере Delphi привел несколько типичных примеров. В С# имеются аналогичные возможности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 14:35 |
|
||
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
И, если я не ошибаюсь, в С++ нельзя сделать так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 14:53 |
|
||
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
void забыл написать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 14:54 |
|
||
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
Алексей К LordMAD Алексей КНу и указатели на нестатические функции, есть они где-нибудь кроме С++ Builder?Они есть в стандарте C++Почему тогда "это" в С++ Builder сделано через модификатор __closure, которого нет в стандарте?Хотя нет, есть . Нету указателей на функцию-член произвольного класса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 16:46 |
|
||
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
Алексей К LordMAD Алексей КОпять же расстраивает отсутствие base. Приходится писать в классе приватный typedef <Имя базового класса> base; В противном случае при смене базового класса сами понимаете что может произойти.Ты только умолчал про: typedef <Имя базового класса 1> base1; typedef <Имя базового класса 2> base2; Ты меня не понял. Имеется ввиду именно указание предыдущего класса в иерархии наследования, относительно текущего. Часто требуется при вызове виртуальных функций. Если в данном случае не использовать typedef при смене базового класса придётся менять все ссылки на него. Их может быть довольно много. Какого из них... Речь идет о множественном наследовании Ах, ну да, в C++ Builder его же нет, если оставаться в рамкам иерархии VCL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 16:54 |
|
||
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
Алексей К LordMAD Алексей КОпять же расстраивает отсутствие base. Приходится писать в классе приватный typedef <Имя базового класса> base; В противном случае при смене базового класса сами понимаете что может произойти.Ты только умолчал про: typedef <Имя базового класса 1> base1; typedef <Имя базового класса 2> base2; Ты меня не понял. Имеется ввиду именно указание предыдущего класса в иерархии наследования, относительно текущего. Часто требуется при вызове виртуальных функций. Если в данном случае не использовать typedef при смене базового класса придётся менять все ссылки на него. Их может быть довольно много.Это ты меня не понял - я имею в виду множественное наследование. Алексей К LordMAD Алексей КНу и указатели на нестатические функции, есть они где-нибудь кроме С++ Builder?Они есть в стандарте C++Почему тогда "это" в С++ Builder сделано через модификатор __closure, которого нет в стандарте?__closure - это не указатель на метод; это указатель на метод в конкретном экземпляре класса. Фактически это два указателя, один - на метод, другой на экземпляр класса. Просто чуть более простая форма записи, чем то, что есть в стандарте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 16:58 |
|
||
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
Алексей К LordMADПосмотрите по той ссылке, которую я давал ранее, softwarer на примере Delphi привел несколько типичных примеров. В С# имеются аналогичные возможности.По какой конкретно ссылке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 17:03 |
|
||
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
Алексей КНету указателей на функцию-член произвольного класса.Есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 17:04 |
|
||
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
Алексей КХотим перекрыть виртуальную функцию и ошибаемся в одной букве. Тоже может быть довольно неприятно.Довольно неприятно можно сделать много в чем, если ошибаться в буквах. А если у предка есть method1 и method2, а ты в наследнике переопределил method2, хотя хотел method1 - тоже ошибся в одном символе. Это не более чем представляющая чисто теоретичекий интерес возможность проследить, а не сделал ли программист такую вот довольно редкую ошибку, при том, что используется для создания исходников, видимо, Блокнот. Любая совеременная ide позволяет подставлять не только правильно имя, но и набор параметров из предка при переопределнии метода в наследнике - короче вручную это никто не делает, так что ошибок такого рода и не возникает. Другой вопрос - если в той же среде ты пытаешься вынести часть методов в предка (нового, существующего и пр. - не важно) - среда будет обязана изменить потомка (из virtual в override) - вот тут начинаются фокусы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 17:16 |
|
||
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
LordMAD Алексей КНету указателей на функцию-член произвольного класса.Есть. Вот , вспомнил как там что. :-)) Ужос кароче, самое то студентов на лекциях пугать. LordMAD Алексей К LordMADПосмотрите по той ссылке, которую я давал ранее, softwarer на примере Delphi привел несколько типичных примеров. В С# имеются аналогичные возможности.По какой конкретно ссылке?Тут LordMADЭто ты меня не понял - я имею в виду множественное наследование.Ах да, точно, тут ведь множественное наследование. :-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 17:21 |
|
||
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
Алексей КПредставьте ситуацию, когда в базовом классе после рефакторинга пропадает виртуальная функция, которая была перекрыта в производных классах. В C# в данной ситуации компилятор выдаст ошибку. В С++ компилятор "схавает" такой код. Позволю себе процитировать : ВикипедияРефакторинг - процесс полного или частичного переписывания компьютерной программы или другого материала, с целью добиться улучшения читаемости кода и общей внутренней структуры компонентов, при полном и точном сохранении изначального смысла и поведения Это вопрос адекватности проведения рефакторинга. Язык не обязан брать на себя контроль за адекватностью ide, IMHO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 17:38 |
|
||
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
С другой стороны, компилятор должен по возможности указывать на явные ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 17:48 |
|
||
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
LordMADЭто вопрос адекватности проведения рефакторинга. Язык не обязан брать на себя контроль за адекватностью ide, IMHO.Возможна ситуация, что базовый класс находится в другом проекте, например разрабатывается под заказ в другой организации. В случае с С# "заказчик" при перекомпиляции сразу заметит проблему. В С++ ошибка может вылезти в самый неподходящий момент. Это я к тому, что в данном случае опираться на средства IDE невозможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2007, 18:00 |
|
||
|
С# - жалкое подобие С++
|
|||
|---|---|---|---|
|
#18+
Алексей К goodbit Gluk (Kazan) Кстати, у C++ масса недостатков, но в этой теме они не озвучивались Озвучь, будь добр. Сам люблю плюсы, но работаю на шарпе.А надо? Обсуждалось уже. Отсутствие override, base, свойств, указателей на нестатические функции (в С++ Builder такое есть, но неуверен что в других реализациях С++ это есть) и т. д. и т. п. Алексей почитайте стандарт языка, а то как то глупо выражаетесь. Скорость разработки не зависит от скорости компиляции, скорость разработки зависит от разработчика и используемых библиотек, а также знаний разработчика. Перегружаемые функции, виртуальные функции это ж родное плюсовое. Вы ещё скажите что абстрактных классов в плюсах нет. Вы с С++ разбираться пробывали, а оно по рукам надавало? Я писал и пишу на плюсах, диезе и даже на T-Sql. Везде свои фичи. На диезе очень удобно делать стандартные вещи, но шаг в сторону - и лучше застрелиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2007, 09:46 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=34930657&tid=1345692]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
178ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
82ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 558ms |

| 0 / 0 |
