Найти тему
Programmer

Картинка к статье про "упаковки и распаковки", рисунок второй с комментариями

Второй рисунок к статье о "распаковке и упаковке", статья находится в Дзен по ссылке https://dzen.ru/media/id/633fe6fd9854f402f47acc5b/osnovy-programmirovaniia-upakovki-i-zapakovki-chto-eto-za-dich-635cfdf7bce839363cd1f738 и данный рисунок наглядно показывает, что происходит "под капотом" при "упаковке и распаковке" объектов в языках C# и Java и других аналогичных языках программирования. В языке C++ "упаковки" и "распаковки" отсутствуют по причине отсутствия безкоробочных типов объектов, то есть в языке С++ всем объектам можно сделать ссылку или коробку, а типы struct и class в нем являются обычными объектами, ничем не отличающимися по сути, а вот struct C# и "оберточные примитивные" типы Java являются "кастрированными безкоробочными" объектами, когда class Java и C# является ссылкой или коробкой от объекта по адресу ссылки, а struct и class C++ являются обычными полноценными именными коробочными объектами, то есть они не являются коробкой-ссылкой, но вы им можете сделать ссылку.

Слева вы видите "распакованный" безкоробочный объект в сверхбыстрой упорядоченной вечной малой памяти (стеке), справа вы видите "упакованный" в ссылки объект в коробку из оранжевой линии или ссылку от интерфейса, абстрактного или базового класса (случай "упаковки" с наследованием). Красная линия обозначает первоначальную мгновенную коробку-ссылку созданного при "упаковке" нового типа объекта в огромной медленной памяти (куче), при этом мгновенная коробка-ссылка создается в "стеке" и сразу приводится к типу малой мгновенной ссылки интерфейса или базового класса целевого типа коробки на выходе шлюзовой операции (см. статью про шлюзовые операции) и после этого мгновенная ссылка на интерфейс (абстрактный класс) или базовый класс копируется в целевую ссылку. В итоге целевая ссылка "упаковки" (оранжевая линия) будет содержать в коробке часть большого объекта в "куче"!

Понятно пояснил рисунок?

Данный рисунок к статье смотрите в Telegraph по ссылке:

Картинка к статье про "упаковки и распаковки", рисунок второй

Всего доброго, увидимся в новых статьях-главах большой моей книги по основам программирования.