вызывающей функции. Так, в контексте вызываемого метода класса
регион памяти, связанный с указателем
this
, будет адресоваться бе-
зотносительно какого-либо объекта, а в контексте вызывающей функ-
ции — будет регионом с находящимся внутри объектом, метод которого
вызывается. Аналогично, аргумент функции, фигурирующий в ней как
самостоятельная переменная (и, соответственно, как самостоятельный
регион памяти), может быть подрегионом в контексте вызывающей
функции — полем структуры, элементом массива. С регионом памяти
в контексте вызываемой функции может быть связан не символ, отно-
сящийся к региону памяти, а константа, символьное выражение или
иное значение, не имеющее в своей основе регион аргумента. Все это
означает, что для корректного применения резюме необходимо про-
водить актуализацию символьных значений: их перевод из контекста
имен и значений вызываемой функции в контекст имен и значений
вызывающей функции.
В соответствии с типами символьных значений можно выполнять
актуализацию символьных значений в зависимости от их типа.
Константные значения не изменяются при их актуализации, по-
скольку они не содержат элементов, зависящих от контекста. Вместе с
тем, типы константного значения в контексте вызываемой функции и в
контексте вызывающей функции могут быть различающимися, поэто-
му может понадобиться осуществление дополнительного приведения
типов для константы.
Символьные значения, относящиеся к регионам памяти, можно ак-
туализировать, используя следующие правила для различных катего-
рий регионов памяти.
Регионы, относящиеся к пространству аргументов вызываемой
функции.
Можно выделить два различных случая передачи в зависи-
мости от того, является ли передаваемый тип ссылочным или типом
указателя, либо не является. Если аргумент передается по ссылке, то
левостороннее значение фактического аргумента становится левосто-
ронним значением формального параметра, а правостороннее значе-
ние фактического параметра — правосторонним значением формаль-
ного параметра. Это означает, что значение объекта в результате вы-
полнения функции может отличаться от значения на момент вызова,
так как в результате передачи по ссылке с фактическим аргументом
может быть связано другое значение.
Если аргумент передается по указателю, то правостороннее зна-
чение фактического параметра становится правосторонним значением
формального параметра. Для левосторонних значений это утвержде-
ние неверно: выполнение присваивания формальному аргументу вну-
три функции не влияет на значение фактического аргумента. Однако,
если указываемый тип не является константным, то в результате вызо-
84 ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. “Приборостроение”. 2015. № 5