![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
const
vasa777 © (2012-06-11 22:33:00)в чем отличие процедур с одинаковым телом
procedure My(x:integer);
от
procedure My(const x:integer);
ведь const по умолчанию подразумевается (если его не пишем) какбы если var нету?
Sha (2012-06-13 00:55:00) [1]Такое изменение наружу не вылезет:
procedure foo(const i: integer);
begin;
pInteger(@i)^:=i+1;
end;
Sha (2012-06-13 00:53:00) [2]> Anatoly Podgoretsky © (12.06.12 09:45) [11]
> То что написано, через указатель можно менять данные,
> даже при передачи по значению
Ну, это вряд ли. Скорее другое поменяется.
Inovet (2012-06-12 14:19:00) [3]> [10] Давайте будем жрать! (12.06.12 09:28)
> Я хочу понять, что утверждается в [4]
Ну коряво написал.
Anatoly Podgoretsky (2012-06-12 09:45:00) [4]То что написано, через указатель можно менять данные, даже при передачи по значению
Давайте будем жрать! (2012-06-12 09:28:00) [5]
> Anatoly Podgoretsky © (12.06.12 08:41) [9]
Я знаю. Я хочу понять, что утверждается в [4].
Anatoly Podgoretsky (2012-06-12 08:41:00) [6]> Давайте будем жрать! (12.06.2012 07:46:08) [8]
CONST защищает только P
Давайте будем жрать! (2012-06-12 07:46:00) [7]
> Inovet © (11.06.12 23:27) [6]
Как?! procedure Proc(P: PInteger) и procedure Proc(const P: PInteger) одинаково позволяют писа́ть в P^. Или ты имел в виду что-то другое, а я не понял.
Германн (2012-06-12 01:43:00) [8]
> Давайте будем жрать! (11.06.12 23:04) [5]
>
>
> > Inovet © (11.06.12 22:56) [4]
> Будто бы конст помешает менять то, на что указатели указывают.
> ..
>
Будто бы const помешает изменить "обходным" способом и простой тип. Но там ССЗБ.
Но для RAD-продукта вполне хороший "дополнительный" классификатор переменной функции.
Inovet (2012-06-11 23:27:00) [9]> [5] Давайте будем жрать! (11.06.12 23:04)
> Будто бы конст помешает менять то, на что указатели указывают...
Усложнит
Давайте будем жрать! (2012-06-11 23:04:00) [10]
> Inovet © (11.06.12 22:56) [4]
Будто бы конст помешает менять то, на что указатели указывают...
Inovet (2012-06-11 22:56:00) [11]Вместо Integer может быть что-то содержащее указатели, через которые можно без const менять ещё что-то.
Давайте будем жрать! (2012-06-11 22:51:00) [12]Если в теле первой ты напишешь x := 1, всё будет в порядке. Во втором случае получишь ошибку компиляции.
> const по умолчанию подразумевается
Const менять нельзя. Без спецификатором — менять можно, но после завершения процедуры значение останется прежним. Var — менять можно, и после завершения процедуры значение параметра будет изменено. Н пальцах вот так.
А вообще почитай, что такое передача параметра по ссылке и передача параметра по значению.
vasa777 (2012-06-11 22:45:00) [13]нет, просто интересно. смотрю вот стронние компоненты с исходниками - в некоторых во всех юнитах так процедуры описаны а в некоторых нет. ето просто для красоты чтения кода?
Ega23 (2012-06-11 22:40:00) [14]Экзамен?