Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.192] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 447 448 [449] 450 451 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#6721
,
|
|
|
|
Цитата trainer @ Я догадываюсь, о чем ты. Только я работаю с экземпляром типа. А как оно там внутри устроено - ссылка в стек пихается или еще что-то - мне безразлично. Зачем мне разбираться в деталях реализации? Эм... Тебе и не нужно, ты не понял. const в делфи -- это не передача константного объекта (даже если он ссылочного типа), это передача по неизменяемой ссылке значения. Т.е. const -- это всегда ссылка, а константность означает лишь то, что ты не можешь в этом окружении изменить ссылку переменной из другого окрудения, как это происходит в случае var. Т.е. const работает практически так же как передача по-значению, только по ссылке. |
|
Сообщ.
#6722
,
|
|
|
|
Цитата korvin @ И так... В яве примитивные типы аналогичны шарповым, но передать их по ссылке как в шарпе нельзя. Но никто не исключает появления такой возможности без потери обратной совместимости. Ибо согласно правилам языка, там, как и в шарпе, изменяется именно значение. Цитата В яве примитивные типы не такие, как в питоне, но в питоне их тоже нельзя передать по ссылке. Отсутствие/наличие явных ссылок не связано с тем, являются примитивные типы изменяемыми значениями или нет. В питоне примитивные типы объявлены неизменяемыми. В яве - они считаются изменяемыми. |
|
Сообщ.
#6723
,
|
|
|
|
в смысле вызывает неконстантный метод внешнего объекта (foo). |
|
Сообщ.
#6724
,
|
|
|
|
Цитата korvin @ ты не понял. const в делфи -- это не передача по-значению константного объекта (даже если он ссылочного типа), это передача по ссылке значения. Т.е. const -- это всегда ссылка, а константность означает лишь то, что ты не можешь в этом окружении изменить ссылку переменной из другого окрудения, как это происходит в случае var. Т.е. const работает практически так же как передача по-значению. Это все понятно. Но никак не мешает изменять переданные объекты |
|
Сообщ.
#6725
,
|
|
|
|
Цитата D_KEY @ Но никто не исключает появления такой возможности без потери обратной совместимости. Ибо согласно правилам языка, там, как и в шарпе, изменяется именно значение. Угу, а в питоне завтра возьмут, да и добавят возможность передавать объект environment, где можно будет по-имени изменить что угодно. (может и так можно, я питон не особо знаю). Еще астероид может упасть. Цитата D_KEY @ Отсутствие/наличие явных ссылок не связано с тем, являются примитивные типы изменяемыми значениями или нет. В питоне примитивные типы объявлены неизменяемыми. В яве - они считаются изменяемыми. Тем не менее это никого не волнует и x += 100 в питоне работает так же как в джаве. Добавлено Цитата D_KEY @ Это все понятно. Но никак не мешает изменять переданные объекты ![]() собственно как и в C++ в приведенном мной случае. |
|
Сообщ.
#6726
,
|
|
|
|
Цитата korvin @ В чем ценность const в делфи -- это не передача по-значению константного объекта (даже если он ссылочного типа), это передача по ссылке значения. Добавлено Цитата korvin @ Ты бы это кодом проиллюстрировал. собственно как и в C++ в приведенном мной случае |
|
Сообщ.
#6727
,
|
|
|
|
Цитата trainer @ В чем ценность В неизменности чужого окружения. Если я передам по var-ссылке данные, то внешняя функция может их подменить. Т.е. не изменить адрес объекат, а заменить другим объектом. В моем окружении. |
|
Сообщ.
#6728
,
|
|
|
|
Цитата korvin @ Угу, а в питоне завтра возьмут, да и добавят возможность передавать объект environment, где можно будет по-имени изменить что угодно. (может и так можно, я питон не особо знаю). Еще астероид может упасть. Еще раз. Ты выдаешь свои фантазии за действительность, вместо того, чтобы открыть доки. Смысл с тобой спорить? Изменяются именно значения. Так описано в документации и так происходит в реализациях. Вероятность появления ref в Java не такая уж и маленькая, они сейчас "активно развиваются". Цитата Тем не менее это никого не волнует и x += 100 в питоне работает так же как в джаве. Потому, что это уже детали реализации Цитата собственно как и в C++ в приведенном мной случае. Так это совсем другой случай Что общего? |
|
Сообщ.
#6729
,
|
|
|
|
Цитата korvin @ А при чем тут var, если речь про const? Если я передам по var-ссылке данные, |
|
Сообщ.
#6730
,
|
|
|
|
Цитата trainer @ Ты бы это кодом проиллюстрировал. http://ideone.com/Lojlvt (правда с ссылками не работает "error: ‘const’ qualifiers cannot be applied to ‘Foo&’", только с указателями, ну да не важно). Добавлено Цитата trainer @ А при чем тут var, если речь про const? При том, что и var и const -- это передача по ссылке, только var позволяет менять объект в другом окружении, а const -- нет. Добавлено Цитата D_KEY @ Еще раз. Ты выдаешь свои фантазии за действительность, вместо того, чтобы открыть доки. Смысл с тобой спорить? Изменяются именно значения. Так описано в документации и так происходит в реализациях. Вероятность появления ref в Java не такая уж и маленькая, они сейчас "активно развиваются". Да какая разница, что там изменяется, ссылку-то все равно не получить. Еще раз: для программиста, пишущего на языке это вообще не видимо и не имеет никакого значения, пока не появится возможность взять адрес этого размещения и передать его в функцию. Вот когда появится ref в джаве, тогда и будем возмущаться. Цитата D_KEY @ Потому, что это уже детали реализации ![]() Вот именно, что детали реализации, а для программиста пофигу, работает-то так же. Ты же почему-то на этих деталях акцентируешь внимание. Цитата D_KEY @ Так это совсем другой случай Что общего?Не знаю чего общего, у тренера спроси, почему он вдруг отождествляет паскалевский ![]() ![]() procedure func(const x : Integer); с сишным ![]() ![]() void func(const int &x); когда это (с одним отличием) ![]() ![]() void func(int &const x); |
|
Сообщ.
#6731
,
|
|
|
|
Гыгы. И что это иллюстрирует? Что можно изменять не-const объекты? Не забудь оформить заявку на Нобелевскую премию.
Добавлено Цитата korvin @ Да мне безразлично, как там работает var. Я про const говорю. При том, что и var и const -- это передача по ссылке, только var позволяет менять объект в другом окружении, а const -- нет. |
|
Сообщ.
#6732
,
|
|
|
|
Цитата Контракт заключается не в отсутствии физических изменений, а в отсутствии логических. not anymore Цитата А нафейхоа, простите, мне знать, как там устроен метод size() и что он там внутри изменяет? чтобы знать, является ли он потоко-безопастным http://herbsutter.com/2013/01/01/video-you...st-and-mutable/ |
|
Сообщ.
#6733
,
|
|
|
|
Цитата korvin @ Да какая разница, что там изменяется, ссылку-то все равно не получить. Еще раз: для программиста, пишущего на языке это вообще не видимо и не имеет никакого значения, пока не появится возможность взять адрес этого размещения и передать его в функцию. Вот когда появится ref в джаве, тогда и будем возмущаться. Зачем возмущаться? Ты меня пытался убедить, что там меняется не значение, а биндинг переменной. Так вот. Это не соответствует действительности именно с точки зрения семантики и спецификации языка. То, что по причине отсутствия в языке некоторых средств изменение значение примитивного типа выглядит как изменения биндинга переменной - вопрос уже другой. |
|
Сообщ.
#6734
,
|
|
|
|
Цитата korvin @ Где я там что-то отождествляю? почему он вдруг отождествляет паскалевский |
|
Сообщ.
#6735
,
|
|
|
|
Цитата MyNameIsIgor @ Хотя, конечно, да, эти высокоуровневые функциональные языки для чокнутых профессоров, ничего длиннее хелловордов не писавших и не представляющих себе работу инженера, всё обеспечивают, ага. Только никому на МПХ не нужны. Да, а мужики-то не знают. |