Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.156] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 181 182 [183] 184 185 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#2731
,
|
|
|
|
|
Сообщ.
#2732
,
|
|
|
|
Цитата Повстанець @ Про какие грабли? Полиморфизм везде работает через ссылки/указатели. Но в одних языках это дело под капотом, потому как все типы ссылочные. У некоторых открыта, потому как ссылочные типы надо объявлять вручную. Если грабли под капотом, то на них не наступишь ![]() Цитата IL_Agent @ А если полиморфизм не работает, зачем вообще не запрещать передавать наследников без определения приведения типа ? fixed, и всё же ? |
|
Сообщ.
#2733
,
|
|
|
|
ээ нет. хинт: хаскелл, *ML, CL Там полиморфизм работает на уровне системы типов |
|
Сообщ.
#2734
,
|
|
|
|
Цитата IL_Agent @ Да, я об этом уже говорил. Но среди обсуждаемых таких языков нет. Если грабли под капотом, то на них не наступишь ![]() |
|
Сообщ.
#2735
,
|
|
|
|
Цитата Повстанець @ В твоём примере нет полиморфизма. Он просто не используется. Он есть, просто компилятором не используется ![]() Цитата Повстанець @ Чем лучше? Явно указываем, что передаём копию объекта. Чтобы это понять, не надо копаться |
|
Сообщ.
#2736
,
|
|
|
|
хотя про Ocaml'овские классы нужно уточнить
|
|
Сообщ.
#2737
,
|
|
|
|
Цитата Повстанець @ Но среди обсуждаемых таких языков нет. Каких таких ? Вообще без граблей ? Возможно, таких нет не только среди обсуждаемых. |
|
Сообщ.
#2738
,
|
|
|
|
Цитата IL_Agent @ Ты и так явно указал, что передаёшь копию объекта. В синтаксисе функции. Зачем указывать дважды?Явно указываем, что передаём копию объекта. Чтобы это понять, не надо копаться Цитата IL_Agent @ Нет. Он не используется твоим кодом. Компилятор С++ не особо склонен дописывать то, о чём ты его не просил. Он есть, просто компилятором не используется ![]() Добавлено Цитата IL_Agent @ С скрытыми под капотом ссылочными типами. Каких таких ? |
|
Сообщ.
#2739
,
|
|
|
|
Цитата Повстанець @ С скрытыми под капотом ссылочными типами. Как ты себе это представляешь ? Добавлено Цитата Повстанець @ Нет. Он не используется твоим кодом. Компилятор С++ не особо склонен дописывать то, о чём ты его не просил. Я написал virtual, ему плевать |
|
Сообщ.
#2740
,
|
|
|
|
Цитата IL_Agent @ Я написал virtual, ему плевать ![]() Правильно ли я понимаю, что для полиморфных и неполиморфных типов компилятор должен реализовывать разную семантику? Первые всегда должны быть ссылочные, а вторые - by value. А разработчику (как конечному, так и компилятора) голову не снесёт? |
|
Сообщ.
#2741
,
|
|
|
|
Цитата IL_Agent @ Языки со ссылочными типами? Зачем их представлять. Они уже есть.Как ты себе это представляешь ? Цитата IL_Agent @ тупо. Я написал virtual, ему плевать ![]() |
|
Сообщ.
#2742
,
|
|
|
|
IL_Agent, давай ты не будешь чушь нести.
Тебя не удивляет, что double передаётся параметру, имеющему тип int? Вот кривизна-то, он оказывается при этом срезается... Неожиданно? Давай поищем школьника, для которого это неочевидно. Вот счас буквально спросил у малой, 10-й класс. Не удивилась. В любой "... для чайников" или "... за 21 день", не говоря уже о серьёзных изданиях и лекциях в ВУЗе, написано, что для полиморфизма требуются ссылки или указатели. Всё ещё не очевидно? Вот что неочевидно для меня, так это почемуне удосужился прочитать Введение к полиморфизму в C++. Всего одно предложение. Вот в вставьте сюда свой любимый язык с очевидными разницами в семантике имён объектов всё очевиднее просто некуда. То значение, а это есть ссылка. При этом зачем-то ещё указатели есть. Что-то значением в принципе не бывает, а что-то в принципе не может являться ссылкой. Что-то передаём по ссылке, но менять не можем, язык копию сделает. Тут указываем константу, а она может меняется. Логики - вагон. Безусловно. Имя обозначает объект. Его свойства определяются его типом. Любой тип может стать ссылочным при необходимости, по умолчанию ни один из них таковым не является. Я уложился в две строки? Ваша очередь. Цитата IL_Agent @ Здравый смысл - вон в тех двух строках. korvin мыслит эвклидово, теми аксиомами, которые вычитал. Ему не докажешь, что геометрия нашего мира вообще-то неэвклидова. Это не просто заметить, а он ещё и не хочет.Речь не о синтаксисе, а о семантике, korvin уже писал же. Компилятор проглотил мой пример и не поперхнулся. Значит синтаксически я написал всё верно. И это не мои представления - это здравый смысл. P.S. Дальше просто надоело чушь комментировать. Угу, давай, не жалко, чесслово. У вас синтасис void Func(НЕКОПИЯ! Base b) Фу, какая мерзость. |
|
Сообщ.
#2743
,
|
|
|
|
Что-то мне подсказывает, что это вызов функции, а не декларация.
Цитата IL_Agent @ Нет, он это прочитал. Я написал virtual, ему плевать |
|
Сообщ.
#2744
,
|
|
|
|
О, ещё перл.Садись - два. Сразу видны дженерики.
|
|
Сообщ.
#2745
,
|
|
|
|
Цитата Повстанець @ Языки со ссылочными типами? Зачем их представлять. Они уже есть. Я про "скрытость под капотом". Как это по-твоему должно быть ? Добавлено Цитата Повстанець @ тупо. ![]() Вот и я про то же. |