Çàî÷íîå äèñòàíöèîííîå îáðàçîâàíèå ñ ïîëó÷åíèåì ãîñóäàðñòâåííîãî äèïëîìà ÷åðåç Internet










Ïîëó÷èòü èíôîðìàöèþ î ïîñòóïëåíèè
 
Ãëàâíàÿ Íîâîñòè Êàðòà ñàéòà Ôîòîàëüáîì Ãîñòåâàÿ êíèãà Êîíòàêòû

 

Ïåðåãðóçêà ïðîöåäóð è ôóíêöèé

 íåêîòîðûõ ñëó÷àÿõ âîçíèêàåò íåîáõîäèìîñòü â íàïèñàíèè ïîäïðîãðàìì, êîòîðûå âûïîëíÿþò îäèíàêîâûå ëîãè÷åñêèå äåéñòâèÿ, íî íàä ïåðåìåííûìè ðàçíûõ òèïîâ äàííûõ.

 ÿçûêå 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; // Îøèáêà!



 
     
   
 


Ïðèãëàøàåì ïðèíÿòü ó÷àñòèå â êðóãëîì ñòîëå!
ïîäðîáíåå   >>>
 

Èíñòèòóò Ìåíåäæìåíòà, Ýêîíîìèêè è Èííîâàöèé íà÷èíàåò íàáîð íà êóðñû ïîâûøåíèÿ êâàëèôèêàöèè!
ïîäðîáíåå   >>>
 

Óâàæåìûå ñòóäåíòû ÀÍÎ ÂÏÎ ÈÌÝèÈ!
ïîäðîáíåå   >>>
 

Íà÷èíàåòñÿ íàáîð íà êóðñû ïîâûøåíèÿ êâàëèôèêàöèè!
ïîäðîáíåå   >>>
 

Ïðèãëàøàåì ïðèíÿòü ó÷àñòèå â êîíôåðåíöèÿõ!
ïîäðîáíåå   >>>
 


âñå íîâîñòè...

 


Ðàññûëêè Subscribe.Ru
Ñîâðåìåííîå îáðàçîâàíèå
Ïîäïèñàòüñÿ ïèñüìîì