|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|||||||
Небезопасность приведения. Не понимаю Прата14.04.2017, 00:08. Показов 6847. Ответов 61
Метки нет (Все метки)
О коде, который описан в книге, слегка переправлен мной:
Проясните, пожалуйста, о чём речь.
0
|
|||||||
| 14.04.2017, 00:08 | |
|
Ответы с готовыми решениями:
61
Прата С. 6.6 С.Прата, задача 3.5 |
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||
| 14.04.2017, 23:42 | |||
|
0
|
|||
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|
| 14.04.2017, 23:54 [ТС] | |
|
И то что у объекта производного класса побочный эффект - это имело смысл написать по другому.
Благодаря GBaLog я понял, что хотел сказать Прата, самого Прату не понял. И Прата технически не прав. Вот и всё. Добавлено через 1 минуту Fulcrum_013, представьте себе, в том коде реально лежат два реальных значения. Добавлено через 7 минут И странно слышать слово рассогласование, где int интерпретируется как int, а double как double. Прекрасное согласование, но определённо опасное.
0
|
|
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||||||||||||||
| 15.04.2017, 01:21 | ||||||||||||||
|
Добавлено через 3 минуты Добавлено через 4 минуты
0
|
||||||||||||||
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|||||||||||
| 15.04.2017, 01:32 [ТС] | |||||||||||
|
int интерпретируется как int, без всяких сомнительных как double.
Всё то же самое
Где же она, интерпретация, отличается? Добавлено через 4 минуты Прата хотя бы адрес объектом не называет, и на том спасибо.
0
|
|||||||||||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|
| 15.04.2017, 01:34 | |
|
0
|
|
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|
| 15.04.2017, 01:36 [ТС] | |
|
0
|
|
|
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,430
|
|
| 15.04.2017, 01:37 | |
|
0
|
|
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
||
| 15.04.2017, 01:52 [ТС] | ||
|
Я выше утрировано сократил, где равенство использовал. Где-то там, в началах истории, я более длинно формулировал эту мысль.
Добавлено через 10 минут Вот так:
0
|
||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||||||||
| 15.04.2017, 04:00 | |||||||||||
|
чем вот это
0
|
|||||||||||
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
||
| 15.04.2017, 12:00 [ТС] | ||
|
Прата вообще о другом пишет:
Вместо того, чтобы просто уже признаться, что имеет место маленький дефект в донесении информации, мы будем что-то доказывать, при этом не брезгуя противоречивостью самому себе. Добавлено через 5 минут Объясните мне, что некорректного в том, что int воспринимается как int, а double как double. В правильной интерпретации double должен восприниматься не как double, а как какой-нибудь int, что ли?
0
|
||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
|||||
| 15.04.2017, 12:08 | |||||
|
daslex,
Для особо одаренны разжую: при доступе к нему через указатель p2 будет как Magnificent т.е. производный класс а значит программа будет ожидать что у того что находится по адресу на который указывает указатель p2 есть все свойства производного класса Magnificent Так где дефект донесения информации? Скорее дефект понимания того как работают указатели.
0
|
|||||
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
||||||
| 15.04.2017, 12:25 [ТС] | ||||||
Объект производного класса, берущий своё начало в объекте своего основного класса - это объект производного класса. Программа опирается на тип, что программе сказали, то она и тащит. Адрес объектом не является.
0
|
||||||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 15.04.2017, 12:40 | ||
|
0
|
||
|
Комп_Оратор)
|
||
| 15.04.2017, 12:53 | ||
|
-размер -интерпретация (формат) -допустимые операции -диапазон возможных значений он не понимает. Поэтому составной тип "указатель типа" он понять просто не в состоянии. Он не понимает, что интерпретация, это то что программа умеет делать только если ей сказать : "эти 4 байта это целое без знака" или "эти 4 байта это целое со знаком". И программа ожидает чего-то в смысле интерпретации только после указания информации о типе того, что нужно интерпретировать. Тогда непонятно и то, что никакая последовательность нулей и единиц в цепочке байт, сама по себе объектом не является. Не знает она, что кто-то может указать на её начало и попытаться проинтерпретировать ожидая, что там тип int, например.
0
|
||
| 15.04.2017, 13:07 [ТС] | ||
|
Не по теме:
К Прата нет никакой неприязни. Чем понятнее пишет человек, тем, как правило, больше у него технических неточностей. Плата за ясность. Объект как таковой - ни при чём. Иначе бы этот код, из поста 52, допускался бы компилятором. Программа бы могла ожидать от объекта чего-то необычного. Этот момент следствие технической неточности.
0
|
||
|
2083 / 1575 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
|
||
| 15.04.2017, 13:39 | ||
|
Кстати компилятор очень так даже нехило следит за тем чтобы рассогласований не было. Причем следит настолько нехило что у программиста есть только два способа организовать несоответствие - либо прямо указать компилятору "забей на несогласование" либо ошибиться с арифметикой указателей. При этом обойти указания "забей" в принципе мало возможно, т.к. в ООП может понадобится приведение указателя на предка к указателю на потомка, причем обойти такое приведение может оказаться слишком сложно а то и невозможно. Именно поэтому Прат и концентрирует внимание на этом аспекте - именно здесь можно прострелить себе ногу. Причем делает это абсолютно точно в каждой букве. Через годик другой перечитаете поймете что Прат описывает все с буквоедской точностью. Понимание работы указателей это кстати как уметь ходить или ездить на велосипеде не падая - пока шишек не понабиваешь не поймешь как это работает и не научишься. Вот когда при разработке кода об указатели достаточно шишек понабиваете тогда и поймете что у Прата все абсолютно точно.
0
|
||
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|
| 15.04.2017, 13:53 [ТС] | |
|
Невозможно порой указатель на предка к указателю на потомка привести? Это нужно обходить?
Я не понимаю Ваш язык. Это имею в виду я. ООП, виртуальный метод в классе-предке дают гарантию безопасности приведения указателя на предка к указателю на потомка. Точно также гарантировано безопасно и обратное приведение. А что Вы имели в виду?
0
|
|
|
Комп_Оратор)
|
|||||||
| 15.04.2017, 13:59 | |||||||
|
Пример вам проиллюстрировал GbaLog- и там ошибка выполнения с попыткой обратиться куда попало. Тут программа ожидала, не того что получила. В терминах вашего кода это:
1
|
|||||||
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|
| 15.04.2017, 14:10 [ТС] | |
|
Это Вы всё принять не хотите, что объект - это место в памяти. С моей точки зрения программа ничего не знает о том, что лежит на каком-то адресе, её обязательно информировать, ибо С++ строго типизированный язык программирования. Если мы информируем программу, что по адресу ул. Советская, д6 живёт дядя Федя, то программа ждёт, что там живёт дядя Федя, и любые указания, которые даются программе, относятся к дяде Феде. Если мы информируем программу, что по адресу ул. Советская, д6 живёт тётя Люся, то программа ждёт, что там живёт тётя Люся, и любые указания относятся к тёте Люсе. Дом один - объекты разные.
А то, что программа приходит на адрес, и вместо ожидания дяди Феди видит перед собой тётю Люсю, программу немного сбивает с толку, программа сообщает тёте Люсе, чтобы она немедленно трансформировалась в дядю Федю, потому что здесь живёт дядя Федя. Тётя Люся трансформируется в дядю Федю, и что-то ломается. У тёти Люси нет некоторых деталей. Программа ничего не ждёт от объекта, она берёт объект и всё, что есть в объекте, который как раз объект базового типа, переносит в объект другого типа. На этом роль объекта базового типа кончается. Дальше уже существует объект производного типа, который сформирован неправильным образом. Вот так точно. А то, что программа чего-то там от объекта базового класса ждёт - это - неточно.
0
|
|
|
31 / 31 / 6
Регистрация: 23.10.2014
Сообщений: 107
|
||
| 15.04.2017, 14:49 | ||
Сообщение было отмечено daslex как решение
РешениеПо адресу false_b как был объект типа A так и остался.
1
|
||
| 15.04.2017, 14:49 | |
|
Прата задача 6.9 C++ - Прата задача 6.9 Прата, задача 2, глава 6 Прата, аргументы по умолчанию Прата -> Шлее = PROFIT? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни
1. Механизм отложенного высвобождения фосфора
Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ
Реализована разная скорость. . .
|
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2.
Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
|
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её.
Всё это стресс конечно. Почему?. . .
|
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот.
Ларри Уингет
|
|
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|