Реферат: Объективное программирование

dat& c = {12,12,1990}; dat cc = {12,12,1990};

dat *pc = &cc;

b.year = 1990; pb->year= 1990;

c.day=b.day+3; pc->day = pb->day+3;

c = b; // Копирование pc->day = pb->day;

// структуры pc->month = pb->month;

pc->year = pb->year;

Наиболее часто неявные ссылки используются при передаче параметров и результатов функций. В этом случае транслятор сам выбирает, что необходимо использовать в качестве фактического параметра - переменную или ссылку на нее, и что используется в качестве результата - ссылка или переменная, косвенно адресуемая по ссылке. Цель подобных ухищрений будет видна позднее - при переопределении операторов, а пока можно заметить, что вызов функций, с

параметрами - обычными значениями и неявными ссылками - синтаксически идентичен. То же самое касается результатов.

В качестве иллюстрации рассмотрим три примера функций, имеющих в качестве формального параметра и результата структуру, которая передается соответственно:

- значением;

- явной ссылкой;

- неявной ссылкой.

Пример 1. Параметры - значения

---------------------------------------------------------dat Inc(dat x) ========> - копирование

{ --------> - ссылка

x.day++;

return(x); ----¬ стек +---+x.day++

} ¦ b =========> x =========¬

L---- +---+ ¦ return(x)

void main() ¦

{ ----¬ стек +---+ --¦-¬ временная

dat a,b,*p; ¦ a <========= x <======= ¦ переменная

a = Inc(Inc(b)); L---- +---+ L---p = &Inc(b); x.day++

a = *p;

}

Пример 2. Параметры - явные ссылки

---------------------------------------------------------dat* Inc(dat* x) x->day++

{ x->day++

К-во Просмотров: 544
Бесплатно скачать Реферат: Объективное программирование