«аочное дистанционное образование с получением государственного диплома через Internet










ѕолучить информацию о поступлении
 
√лавна€ Ќовости  арта сайта ‘отоальбом √остева€ книга  онтакты

  чему сн€тс€ шины: шины 245 70 17.5. Ќа „ћ по хоккею с Pirelli.

{LTS}

 

ѕерегрузка процедур и функций

¬ некоторых случа€х возникает необходимость в написании подпрограмм, которые выполн€ют одинаковые логические действи€, но над переменными разных типов данных.

¬ €зыке Delphi существует возможность дать двум и более процедурам (функци€м) одинаковые идентификаторы при условии, что все такие процедуры (функции) отличаютс€ списком параметров. “ака€ возможность называетс€ перегрузкой. ƒл€ указани€ того, что процедура (функци€) перегружена, служит стандартна€ директива overload:

procedure Increment(var Value: Integer); overload;

procedure Increment(var Value: Real); overload;

 акую именно процедуру использовать в том или ином случае компил€тор будет определ€ть на этапе компил€ции программы по типам фактических аргументов, передаваемых при вызове.

ѕри перегрузке процедур и функций существует особенность, св€занна€ с целочисленными типами данных. ƒопустим, имеютс€ две процедуры:

procedure Print(X: Shortint); overload; // процедура 1

procedure Print(X: Longint); overload; // процедура 2

≈сли мы попробуем вызвать процедуру Print, указав в качестве фактического аргумента целочисленную константу, то увидим, что выбор компил€тором варианта процедуры зависит от значени€ константы.

ѕоскольку в нынешней версии среды Delphi обобщенный тип данных Integer совпадает с фундаментальным типом данных Longint, следующий вариант перегрузки €вл€етс€ ошибочным:

procedure Print(X: Integer); overload;

procedure Print(X: Longint); overload; // ќшибка!

“ака€ же ошибка возникает при использовании пользовательских типов данных, определенных через общий базовый тип.

type
TMyInteger = Integer;
procedure Print(X: Integer); overload;
procedure Print(X: TMyInteger); overload; // ќшибка!

„то делать в тех случа€х, когда така€ перегрузка просто необходима? ƒл€ этого пользовательский тип данных необходимо создавать с использованием ключевого слова type:

type
TMyInteger = type Integer;
procedure Print(X: Integer); overload;
procedure Print(X: TMyInteger); overload; // ѕравильно

ѕерегруженные процедуры и функции должны иметь одинаковое колчиество передаваемых переменных.

«апрещаетс€ также перегружать функции, которые отличаютс€ лишь типом возвращаемого значени€.

function SquareRoot(X: Integer): Single; overload;

function SquareRoot(X: Integer): Double; overload; // ќшибка!


”знать как сэкономить в кризис моно на сайте ekonom-it.ru

“рансл€торы и их виды  арта сайта язык моделировани€ UML ”нифицированный €зык моделировани€ UML ќписание €зыка програмимровани€ Delphi –абота с файлами в Delphi ќбработка исключений в Delphi —труктура среды программировани€ “ипы данных Case-средства 


 
     
   
 


ѕриглашаем прин€ть участие в круглом столе!
подробнее   >>>
 

»нститут ћенеджмента, Ёкономики и »нноваций начинает набор на курсы повышени€ квалификации!
подробнее   >>>
 

”важемые студенты јЌќ ¬ѕќ »ћЁи»!
подробнее   >>>
 

Ќачинаетс€ набор на курсы повышени€ квалификации!
подробнее   >>>
 

ѕриглашаем прин€ть участие в конференци€х!
подробнее   >>>
 


все новости...

 


–ассылки Subscribe.Ru
—овременное образование
ѕодписатьс€ письмом