Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.156] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 339 340 [341] 342 343 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#5101
,
|
|
|
|
Цитата MyNameIsIgor @ Ну, потому что когда "пользователь попытается использовать определенные функции класса WidgetManager", компилятор сообщит об ошибке. А сделает он это потому, что С++ - статически типизированный язык. В свою очередь, вы этот факт прокомментировали как "получит жопу". Из чего следует вывод, что вы воспринимаете статическую типизацию как жопу. нет, не следует, из этого следует, что пользователь получит жопу т.к. ожидал, что работает с объектом класса A<B>, а получилось, что с недо-A<B> |
|
Сообщ.
#5102
,
|
|
|
|
Цитата korvin @ ожидал, что работает с объектом класса A<B> Да, и его ожидания оправдались Ты пропустил мимо ушей мои рассуждения о типах? Тип A<B> и тип A<C> - это разные типы. В том числе, у них может различаться и набор операций. |
|
Сообщ.
#5103
,
|
|
|
|
Цитата MyNameIsIgor @ А сами не видите? Как я могу получить some_type в вашем коде? Где он у вас вообще? Или решили дурачка включить? С чего у вас void f()?потому что у вас он изначально void был, потому не обратил внимание, ну да пожалуйста: ![]() ![]() interface Impl<T> { T f(); } class DefaultImpl<T> implements Impl<T> { public static final boolean flag = true; private T data; public DefaultImpl(T data) { this.data = data; } public T f() { System.out.printf("Default (%s)\n", flag); return data; } } |
|
Сообщ.
#5104
,
|
|
|
|
Цитата korvin @ потому что у вас он изначально void был, потому не обратил внимание, ну да пожалуйста Что пожалуйста? Вы так и не поняли? Метод f() у меня возвращает не T, а some_type. Для того он в Impl и объявлен. Хочу так же на джаве (шарпе, дельфи - не важно) |
|
Сообщ.
#5105
,
|
|
|
|
Цитата D_KEY @ Да, и его ожидания оправдались ![]() нет. ибо A<?> декларирует публичный метод g(), а полученный A<B> -- нет Цитата D_KEY @ Ты пропустил мимо ушей мои рассуждения о типах? видимо да, т.к. не увидел в твоих постах никаких рассуждений о типах Цитата D_KEY @ Тип A<B> и тип A<C> - это разные типы. В том числе, у них может различаться и набор операций. разные, но тип A он один. и тот же. для всех. Добавлено Цитата MyNameIsIgor @ Что пожалуйста? Вы так и не поняли? Метод f() у меня возвращает не T, а some_type. Для того он в Impl и объявлен. Хочу так же на джаве (шарпе, дельфи - не важно) ![]() какое отношение typedef имеет к шаблонам? но да, возвращать значения произвольного типа одним и тем же методом в джаве нельзя. и правильно |
|
Сообщ.
#5106
,
|
|
|
|
Цитата korvin @ разные, но тип A он один. и тот же. для всех. В том то и дело, что типа A в плюсах не существует Есть только его шаблон. Добавлено Цитата korvin @ какое отношение typedef имеет к шаблонам? То, что он может быть разным для разных специализаций. Цитата korvin @ но да, возвращать значения произвольного типа одним и тем же методом в джаве нельзя. и правильно Одним и тем же - да правильно. Вопрос в том, с чего это один и тот же метод? В плюсах это разные методы разных типов. |
|
Сообщ.
#5107
,
|
|
|
|
Цитата korvin @ нет. ибо A<?> декларирует публичный метод g(), а полученный A<B> -- нет что такое A<?> ?Цитата видимо да, т.к. не увидел в твоих постах никаких рассуждений о типах Я повторю. Классы-политики и шаблоны вообще позволяют манипулировать конструированием типов. То, что предлагаешь ты работает в динамике и с объектами. Так можно сделать и в С++, но это не является аналогом того, что требуется. Цитата тип A он один. и тот же. для всех. A - не тип, а шаблон типа. В С++ не дженерики, korvin, в С++ шаблоны. |
|
Сообщ.
#5108
,
|
|
|
|
Цитата MyNameIsIgor @ В том то и дело, что типа A в плюсах не существует Есть только его шаблон.но это же шаблон типа, вполне конкретный шаблон, вполне конкретного типа. я бы еще понял, если бы неполные реализации считались бы абстрактными классами P.S. а че это D_KEY в RO? o_O' |
|
Сообщ.
#5109
,
|
|
|
|
Цитата korvin @ возвращать значения произвольного типа одним и тем же методом в джаве нельзя Покажи, где в приведенном плюсовом коде один и тот же метод возвращает значения разных типов? В С++, кстати, это тоже нельзя, за исключением ковариантности при перегрузке виртуальных функций. |
|
Сообщ.
#5110
,
|
|
|
|
Цитата D_KEY @ Цитата korvin @ нет. ибо A<?> декларирует публичный метод g(), а полученный A<B> -- нет что такое A<?> ?тайпкласс вида * -> * =) |
|
Сообщ.
#5111
,
|
|
|
|
Цитата korvin @ но это же шаблон типа Ага. Цитата korvin @ вполне конкретный шаблон Ага. Цитата korvin @ вполне конкретного типа Нет Это объясняли совсем недавно. Тип становится известен в момент инстанцирования. И никак не раньше.Цитата korvin @ P.S. а че это D_KEY в RO? o_O' Да-да! D_KEY, почисти личные сообщения |
|
Сообщ.
#5112
,
|
|
|
|
Цитата korvin @ P.S. а че это D_KEY в RO? o_O' Небольшое наказание. За ролик, размещенный в Юморе->Видеоприкол. Я пока не понял, что с ним было не так Еще из-за этого(судя по всему) у меня ящик сообщений говорит, что переполнен, и не дает ничего отправить |
|
Сообщ.
#5113
,
|
|
|
|
Цитата D_KEY @ Я повторю. Классы-политики и шаблоны вообще позволяют манипулировать конструированием типов. То, что предлагаешь ты работает в динамике и с объектами. Так можно сделать и в С++, но это не является аналогом того, что требуется. то что предлагаю я работает хоть в динамике хоть в статике, это не важно. Добавлено Цитата D_KEY @ Покажи, где в приведенном плюсовом коде один и тот же метод возвращает значения разных типов? В С++, кстати, это тоже нельзя, за исключением ковариантности при перегрузке виртуальных функций. т.е. невозможно узнать, является ли класс инстансом шаблона или нет? |
|
Сообщ.
#5114
,
|
|
|
|
Наказание на сутки всего)
|
|
Сообщ.
#5115
,
|
|
|
|
Цитата korvin @ т.е. невозможно узнать, является ли класс инстансом шаблона или нет? В статике - возможно. В run-time - нет. Полученные при инстанцировании типы никак не связаны. Если вы сами их не свяжите |