Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.192] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 51 52 [53] 54 55 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#781
,
|
|
|
|
|
Сообщ.
#782
,
|
|
|
|
korvin, посмотрел твой последний плюсик от --Ins--'а. Возвращаясь к теме модулей в C++: мне очень доставляет в питоне писать такие костыли как:
![]() ![]() import OptionParser op = OptionParser.OptionParser() #ЩИТО, у меня в глазах двоится? или: from OptionParser import OptionParser В этом смысле разделение логического представления (файлы) и физического (классы и неймспейсы) все таки чуточку более кошерно |
|
Сообщ.
#783
,
|
|
|
|
--Ins--, есл это тебя интересует, то хаки возможны. const - это механизм логики, а не "физики".
|
|
Сообщ.
#784
,
|
|
|
|
Цитата D_KEY @ А как это связано с const? Интерфейс объекта не меняется. Просто ты говоришь: "я не буду менять состояние этого объекта". Затем, если ты скажешь "измени объект", то компилятор скажет тебе: "незя". Так понятно? ну не знаю, это Повстанецъ заявил, что раз в делфи нет const, то он нифига не оопшный, а процедурный. а интерфейс, фактический(наверное стоило это уточнить), меняется, ибо вызывать методы, изменяющие внутреннее состояние уже нельзя, хотя формальный интерфейс остается прежним. |
|
Сообщ.
#785
,
|
|
|
|
Цитата D_KEY @ --Ins--, есл это тебя интересует, то хаки Какой хак? Что я незаконного сделал то? |
|
Сообщ.
#786
,
|
|
|
|
Цитата --Ins-- @ Эмм.. Это возможно только хаком, который приведет к неопределенному поведению для случая изначально константного объекта(в С++ можно объявлять константы любых типов, не только встроенных): ![]() ![]() const MyClass my_constant("aaa", 10); Кстати, чем вызвано ограничение на константы пользовательских типов в Delphi? |
|
Сообщ.
#787
,
|
|
|
|
D_KEY, идея константных объектов может и замечательная, но реализовать ее так, увы, невозможно
Никто тебе не гарантирует ничего, ты можешь только надеяться. Так и говори "я надеюсь", а не "мне гарантировано". Я же говорю, никто не гарантирует неизменность объекта - это исключительно на совести программиста. Если нужно чтобы объект не изменялся - не передавай ссылку на него, передай значения нужных параметров |
|
Сообщ.
#788
,
|
|
|
|
Цитата --Ins-- @ Да. А ещё есть const_cast, смена значения через указатель и смещение, юнион-каст, reinterpret_cast тоже даёт богатое поле для экспериментов, ассемблерные вставки, хекс редактор и ещё целая куча таких же фееричных возможностей нарушить инкапсуляцию через задницу. В полях он у него был записан ![]() |
|
Сообщ.
#789
,
|
|
|
|
Цитата --Ins-- @ Цитата D_KEY @ --Ins--, есл это тебя интересует, то хаки Какой хак? Что я незаконного сделал то? ![]() Пока ничего Но пытаешься найти лазейку. Стандартных - две. Одна "правильная", другая приводит к UB. |
|
Сообщ.
#790
,
|
|
|
|
Цитата Мяут-Настоящий @ korvin, посмотрел твой последний плюсик от --Ins--'а. Возвращаясь к теме модулей в C++: мне очень доставляет в питоне писать такие костыли как: ![]() ![]() import OptionParser op = OptionParser.OptionParser() #ЩИТО, у меня в глазах двоится? или: from OptionParser import OptionParser В этом смысле разделение логического представления (файлы) и физического (классы и неймспейсы) все таки чуточку более кошерно как будто С++ мешает иметь ![]() ![]() Foo::Foo ты же видел пример Пайка с одной строкой кода С++, в которой 7 раз встречается слово Foo, обозначающее разные сущности? а питонисты такие питонисты (я про авторов этого модуля) |
|
Сообщ.
#791
,
|
|
|
|
Цитата --Ins-- @ D_KEY, идея константных объектов может и замечательная, но реализовать ее так, увы, невозможно Никто тебе не гарантирует ничего, ты можешь только надеяться. Так и говори "я надеюсь", а не "мне гарантировано". Я же говорю, никто не гарантирует неизменность объекта - это исключительно на совести программиста. Тебе же объяснили, как С++ компилятор это гарантирует. |
|
Сообщ.
#792
,
|
|
|
|
Цитата Повстанець @ Да. А ещё есть const_cast, смена значения через указатель и смещение, юнион-каст, reinterpret_cast тоже даёт богатое поле для экспериментов, ассемблерные вставки, хекс редактор и ещё целая куча таких же фееричных возможностей нарушить инкапсуляцию через задницу. Заметь, я на уровень указателей и ассемблерных вставок не опускался, я остался на уровне абстракции объектов И нарушил, нет, не инкапсуляцию, она тут ни причем... А вашу "гарантию" |
|
Сообщ.
#793
,
|
|
|
|
Цитата korvin @ как будто С++ мешает иметь Не мешает. Но и не обязывает. Цитата korvin @ а питонисты такие питонисты (я про авторов этого модуля) Дык как быть, если модуль реализует всего один класс? :-) |
|
Сообщ.
#794
,
|
|
|
|
--Ins--, покажи пример, в котором бы "легально"(без грязных хаков) компилятор давал изменять константные объекты?
Добавлено Цитата --Ins-- @ Цитата Повстанець @ Да. А ещё есть const_cast, смена значения через указатель и смещение, юнион-каст, reinterpret_cast тоже даёт богатое поле для экспериментов, ассемблерные вставки, хекс редактор и ещё целая куча таких же фееричных возможностей нарушить инкапсуляцию через задницу. Заметь, я на уровень указателей и ассемблерных вставок не опускался, я остался на уровне абстракции объектов И нарушил, нет, не инкапсуляцию, она тут ни причем... А вашу "гарантию" ![]() Когда? Ты ничего не нарушил еще. Добавлено Когда ты передашь ссылку на объект в другой объект? |
|
Сообщ.
#795
,
|
|
|
|
D_KEY, я может чего не понял? Сначала, ты говоришь о невозможности изменить объект, который в подпрогрмму передается с const? Или о чем речь?
|