|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|||||||
Небезопасность приведения. Не понимаю Прата14.04.2017, 00:08. Показов 5925. Ответов 61
Метки нет (Все метки)
О коде, который описан в книге, слегка переправлен мной:
Проясните, пожалуйста, о чём речь.
0
|
|||||||
| 14.04.2017, 00:08 | |
|
Ответы с готовыми решениями:
61
Прата С. 6.6 С.Прата, задача 3.5 |
|
2083 / 1574 / 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 / 1574 / 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 / 1574 / 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,427
|
|
| 15.04.2017, 01:37 | |
|
0
|
|
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
||
| 15.04.2017, 01:52 [ТС] | ||
|
Я выше утрировано сократил, где равенство использовал. Где-то там, в началах истории, я более длинно формулировал эту мысль.
Добавлено через 10 минут Вот так:
0
|
||
|
2083 / 1574 / 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 / 1574 / 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 / 1574 / 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 / 1574 / 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 | |
|
Помогаю со студенческими работами здесь
60
Прата задача 6.9 C++ - Прата задача 6.9 Прата, задача 2, глава 6 Прата, аргументы по умолчанию Прата -> Шлее = PROFIT? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|