Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.156] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 203 204 [205] 206 207 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#3061
,
|
|
|
|
Цитата D_KEY @ Изменения? Не знаю. Но может быть для чего-то и пригодится. Доступ к ним непосредственно на чтение может понадобится например для автоматического модульного тестирования. В любом случае, не нравится - не используй. Да чуть выше посмотрите пример. Там только чтение, правда. |
|
Сообщ.
#3062
,
|
|
|
|
Цитата IL_Agent @ Цитата D_KEY @ Ну почему же не напишешь? Формально делаем += простым синтаксическим сахаром над x = x + y и все встает на свои места. А если вместо s - поле иммутабельной структуры ? Никак. Зачем что-то менять в иммутабельной структуре? Еще интересно, что будет пониматься под структурой Поля структуры могут быть "расширены"(т.е. не быть ссылками), а могут быть ссылками. Добавлено Цитата Romkin @ Цитата D_KEY @ К чему этот вопрос? Ты о низкоуровневых указателях на функцию и метод? Тут разница есть. А в функторе можно представить и то, и другое. Разницы действительно нет. Это абстракции разных уровней. Мне понять анонимный метод гораздо проще, чем функтор, который еще и писать надо ![]() Анонимный метод - тоже функтор Функторы для указателей на функцию и указателей на методы уже написаны в стандартной библиотеки С++.Цитата Цитата D_KEY @ Нет, ты уже завел эту абстракцию, раз тебе это все понадобилось. Просто ты ее завел неявно. А неявное всегда хуже явного. Ничего подобного Это взгляд завзятого сишника, которому нужно забраться в коде в печенки каждой абстракции. На самом деле их нужно просто использовать.Нет Ты фактически не наследуешь от конкретного класса, а используешь его интерфейс. Это и есть неявное введение абстракции. А в определении класса увидим наследование... |
|
Сообщ.
#3063
,
|
|
|
|
Цитата D_KEY @ Ты фактически не наследуешь от конкретного класса, а используешь его интерфейс. Это и есть неявное введение абстракции. А в определении класса увидим наследование... Вот эту фразу я вообще не понял... |
|
Сообщ.
#3064
,
|
|
|
|
Цитата Romkin @ Цитата D_KEY @ Ты фактически не наследуешь от конкретного класса, а используешь его интерфейс. Это и есть неявное введение абстракции. А в определении класса увидим наследование... Вот эту фразу я вообще не понял... Мы обсуждаем твой пример с классом, который наследует от другого, но лишь предоставляет его интерфейс, а реализацию не использует. Или нет ? |
|
Сообщ.
#3065
,
|
|
|
|
Цитата D_KEY @ Мы обсуждаем твой пример с классом, который наследует от другого, но лишь предоставляет его интерфейс, а реализацию не использует. Или нет Бррр. Чего? Какой пример? |
|
Сообщ.
#3066
,
|
|
|
|
Цитата Romkin @ Цитата D_KEY @ Мы обсуждаем твой пример с классом, который наследует от другого, но лишь предоставляет его интерфейс, а реализацию не использует. Или нет Бррр. Чего? Какой пример? ![]() Тогда о чем ты ? |
|
Сообщ.
#3067
,
|
|
|
|
D_KEY, все, я уже запутался
|
|
Сообщ.
#3068
,
|
|
|
|
Romkin, я напутал
Сегодня явно не мой день |
|
Сообщ.
#3069
,
|
|
|
|
Будет все так, как надо
Например, в C/C++ ++i; i += 1; i = i + 1; дают одинаковый результат (в случае пользовательского типа программист обязан обеспечить такое поведение) Объявим теперь i как константу Результат опять будет одинаковым - сообщение о попытке изменить константу (или вызов неконстантного метода для константы) В питоне, кстати, есть операция +=, применимая и к переменным, имеющим значение иммутабельного типа. Просто дело в том, что += не обязана применяться к значению, она может быть применена и к переменной (путем замены x += y на x = x + y). |
|
Сообщ.
#3070
,
|
|
|
|
Цитата amk @ В питоне, кстати, есть операция +=, применимая и к переменным, имеющим значение иммутабельного типа. Просто дело в том, что += не обязана применяться к значению, она может быть применена и к переменной (путем замены x += y на x = x + y). Именно об этом я и говорю. А для встроенных типов компилятор может использовать непосредственно значения, это не будет менять видимого поведения. |
|
Сообщ.
#3071
,
|
|
|
|
Цитата D_KEY @ Цитата 4. Разделение на структуры, классы и интерфейсы, с четким разделением функций и контролем на уровне языка. Когда класс - просто структура можно сказать, что интерфейс - абстрактный класс. Нет, дело не в "структуре". Множественное наследование(в том числе и классов, а не интерфейсов) - вполне етественно, а его запрет отражается на возможностях моделирования. Читай теорию ООП, того же Б.Мейера. Чистые интерфейсы(в том виде, в котором они есть в C#, Java, Delphi) нужны только для затыкания дыры запрета множественного наследования. Никакой другой полезной нагрузки они не несут. Вот сижу и думаю над тем, что интерфейсы не нужны. Была у меня задачка, как насчет двоичного делегирования? |
|
Сообщ.
#3072
,
|
|
|
|
Цитата Romkin @ Вот сижу и думаю над тем, что интерфейсы не нужны. Была у меня задачка, как насчет двоичного делегирования? Это шо за слова такие новые? Что еще за "двоичное делегирование" ? Ссылку мона на покурить? |
|
Сообщ.
#3073
,
|
|
|
|
Цитата Romkin @ Была у меня задачка, как насчет двоичного делегирования? Если это докажет необходимость интерфейсов(в таком виде, что есть в шарпе/яве/делфи), то давай Только поясни задачу |
|
Сообщ.
#3074
,
|
|
|
|
Начал. Ничего не понял, запутался в скобках. Из английского понял, что против копий там не возражают. Ничего другого из относящегося к предмету твоего поста там не нашёл. Наверно ты что-то напутал. То ли в посте, то ли в ссылке.
|
|
Сообщ.
#3075
,
|
|
|
|
Цитата Qraizer @ Наверно ты что-то напутал. нет, просто ты Цитата Qraizer @ Ничего не понял |