|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|||||||
Небезопасность приведения. Не понимаю Прата14.04.2017, 00:08. Показов 7274. Ответов 61
Метки нет (Все метки)
О коде, который описан в книге, слегка переправлен мной:
Проясните, пожалуйста, о чём речь.
0
|
|||||||
| 14.04.2017, 00:08 | |
|
Ответы с готовыми решениями:
61
Прата С. 6.6 С.Прата, задача 3.5 |
|
2083 / 1576 / 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 / 1576 / 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 / 1576 / 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 / 1576 / 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 / 1576 / 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 / 1576 / 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 / 1576 / 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? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки.
Добавлено:
- Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
|
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы.
Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
|
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|