Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

const   Найти похожие ветки 

 
vasa777   (2012-06-11 22:33) [0]

в чем отличие процедур с одинаковым телом
procedure My(x:integer);
от
procedure My(const x:integer);
ведь const по умолчанию подразумевается (если его не пишем) какбы если var нету?


 
Ega23 ©   (2012-06-11 22:40) [1]

Экзамен?


 
vasa777   (2012-06-11 22:45) [2]

нет, просто интересно. смотрю вот стронние компоненты с исходниками - в некоторых во всех юнитах так процедуры описаны а в некоторых нет. ето просто для красоты чтения кода?


 
Давайте будем жрать!   (2012-06-11 22:51) [3]

Если в теле первой ты напишешь x := 1, всё будет в порядке. Во втором случае получишь ошибку компиляции.


> const по умолчанию подразумевается
Const менять нельзя. Без спецификатором — менять можно, но после завершения процедуры значение останется прежним. Var — менять можно, и после завершения процедуры значение параметра будет изменено. Н пальцах вот так.

А вообще почитай, что такое передача параметра по ссылке и передача параметра по значению.


 
Inovet ©   (2012-06-11 22:56) [4]

Вместо Integer может быть что-то содержащее указатели, через которые можно без const менять ещё что-то.


 
Давайте будем жрать!   (2012-06-11 23:04) [5]


> Inovet ©   (11.06.12 22:56) [4]
Будто бы конст помешает менять то, на что указатели указывают...


 
Inovet ©   (2012-06-11 23:27) [6]

> [5] Давайте будем жрать!   (11.06.12 23:04)
> Будто бы конст помешает менять то, на что указатели указывают...

Усложнит


 
Германн ©   (2012-06-12 01:43) [7]


> Давайте будем жрать!   (11.06.12 23:04) [5]
>
>
> > Inovet ©   (11.06.12 22:56) [4]
> Будто бы конст помешает менять то, на что указатели указывают.
> ..
>

Будто бы const помешает изменить "обходным" способом и простой тип. Но там ССЗБ.
Но для RAD-продукта вполне хороший "дополнительный" классификатор переменной функции.


 
Давайте будем жрать!   (2012-06-12 07:46) [8]


> Inovet ©   (11.06.12 23:27) [6]
Как?! procedure Proc(P: PInteger) и procedure Proc(const P: PInteger) одинаково позволяют писа́ть в P^. Или ты имел в виду что-то другое, а я не понял.


 
Anatoly Podgoretsky ©   (2012-06-12 08:41) [9]

> Давайте будем жрать!  (12.06.2012 07:46:08)  [8]

CONST защищает только P


 
Давайте будем жрать!   (2012-06-12 09:28) [10]


> Anatoly Podgoretsky ©   (12.06.12 08:41) [9]
Я знаю. Я хочу понять, что утверждается в [4].


 
Anatoly Podgoretsky ©   (2012-06-12 09:45) [11]

То что написано, через указатель можно менять данные, даже при передачи по значению


 
Inovet ©   (2012-06-12 14:19) [12]

> [10] Давайте будем жрать!   (12.06.12 09:28)
> Я хочу понять, что утверждается в [4]

Ну коряво написал.


 
Sha ©   (2012-06-13 00:53) [13]

> Anatoly Podgoretsky ©   (12.06.12 09:45) [11]
> То что написано, через указатель можно менять данные,
> даже при передачи по значению

Ну, это вряд ли. Скорее другое поменяется.


 
Sha ©   (2012-06-13 00:55) [14]

Такое изменение наружу не вылезет:
procedure foo(const i: integer);
begin;
 pInteger(@i)^:=i+1;
 end;



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.053 c
2-1329158582
Hgd1
2012-02-13 22:43
2013.03.22
Delphi 2011 и русский текст


15-1338625099
Омлет
2012-06-02 12:18
2013.03.22
Kuru-Kuru Nabe - кострюля с конвекционным самоперемешиванием


15-1347866015
brother
2012-09-17 11:13
2013.03.22
Анимация в Excel


2-1337145645
Verner
2012-05-16 09:20
2013.03.22
Переопределение свойства класса-наследника


15-1263085307
McSimm
2010-01-10 04:01
2013.03.22
(2) Кто знает, что-то похожее, но новое?