X


[ Pobierz całość w formacie PDF ]
.typami i/lub liczb� argumentów.Sk�adnia j�zyka C++ dopuszcza taki sposób deklarowania i definiowania funkcji; nazywa si� go przeci��eniem nazwy funkcji lub krócej przeci��eniem funkcji.Obowi�zuj� przy tym nast�puj�ce zasady:Funkcje przeci��one (o takiej samej nazwie) musz� mie� taki sam zasi�g (np.bloku, pliku, programu).Funkcje, które ró�ni� si� tylko typem zwracanym, nie mog� mie� takiej samej nazwy.Funkcje o takiej samej nazwie musz� si� ró�ni� sygnaturami i mog� si� ró�ni� typem zwracanym.Je�eli argumenty dwóch funkcji ró�ni� si� tylko tym, �e jedna ma argument typu T, a druga T&, to funkcje te nie mog� mie� takiej samej nazwy.Wynika to st�d, �e zarówno T, jak i T& s� inicjowane tym samym zbiorem wartoœci i wywo�anie nie potrafi ich rozró�ni�.Dwie funkcje, których argumenty ró�ni� si� tylko tym, �e jedna ma argument typu T, a druga const T, nie mog� mie� takiej samej nazwy.Przyczyna jest analogiczna, jak dla argumentów typu T i T&.Przyk�ad 5.23.#include <iostream.h>extern int min(int, int);extern double min(double, double);extern int min(int, int, int);int main() {cout << min( 2, 7 ) << endl;cout << min( 2.5, 7.5 ) << endl;cout << min( 9, 6, 4 ) << endl;return 0;}Definicje kolejnych funkcji min() mog� mie� posta�:int min( int a, int b ) { return a < b ? a : b; }double min(double x, double y){ return x < y ? x : y; }int min(int u, int v, int w){if (u < v) return u < w ? u : w;else return v < w ? v : w;}Dyskusja.W wywo�aniu min(2,7) liczba i typy argumentów aktualnych s� porównywane z liczb� i typami argumentów formalnych kolejnych prototypów funkcji min(), zadeklarowanych przed blokiem funkcji main().Po dopasowaniu przez kompilator prototypu int min(int,int) konsolidator w��czy do pliku z kodem wykonalnym definicj� tej funkcji.Analogicznie b�d� przetwa­rzane pozosta�e dwa wywo�ania.Tak oto wprowadziliœmy funkcje przeci��one.Jest to realizacja nast�puj�cej zasady: jeden ogólny interfejs, wiele metod (implementacji).Funkcje przeci��one zalicza si� do metod o wi�zaniu wczesnym, poniewa� ca�a informacja adresowa, potrzebna do ich wywo�ania, jest znana po zako�czeniu kompilacji.Dzi�ki temu wywo�ania funkcji o wi�zaniu wczesnym (nie tylko przeci��onych) nale�� do najszybszych, poniewa� narzut czasowy, zwi�zany z ich wywo�aniem, jest minimalny.Zauwa�my te�, �e przeci��anie funkcji pozwala na rozszerzanie œrodowiska programowego C++ w miar� potrzeb.5.8.1.Dopasowanie argumentówW fazie kompilacji programu, zawieraj�cego wywo�ania funkcji przeci��onych, uruchamiana jest doœ� z�o�ona procedura dopasowania argumentów.Procedura ta ma na celu mo�liwie najlepsze dopasowanie argumentów wywo�ania do argumentów formalnych i w rezultacie wybranie odpowiedniej funkcji.Szukane dopasowanie ma by� najlepsze w tym sensie, �e wybrana funkcja musi mie� przynajmniej jeden argument lepiej dopasowany ni� ka�da z pozosta�ych, mo�liwych do zaakceptowania funkcji.Proces dopasowania argumentów jest to najkrótszy ci�g przekszta�ce� (konwersji) typu argumentu (-ów) aktualnego w typ argumentu(-ów) formalnego.W ci�gu tym dopuszcza si� co najwy�ej jedn� konwersj� jawn�, tj.zadan� przez programist�.W procesie dopaso­wania maj� miejsce zestawione ni�ej regu�y.Dopasowanie dok�adne.Typy argumentów aktualnych i formalnych s� te same lub przechodz� w siebie drog� konwersji trywialnych: typ T w T&, typ T& w typ T[] w T*, typ T w const T, typ T*, w const T*, typ T(argumenty) w T(*)(argumenty).Dopasowanie z promocj�.Je�eli nie powiedzie si� dopasowanie dok�adne, to kompilator stosuje wszelkie mo�liwe promocje.Dla typów ca�kowitych, argumenty typu char, unsigned char, enum oraz short int, s� promowane do typu int.Je�eli rozmiarsizeof(short int) <= sizeof(int),to argument typu unsigned short int jest promowany do typu int.Dla typów zmiennopozycyjnych stosowana jest specjalna promocja z float do double.Pokazane ni�ej deklaracje funkcji przeci��onych i ich wywo�ania ilustruj� niektóre promocje.Przyk�ad 5.24.#include <iostream [ Pobierz całość w formacie PDF ]
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • trzylatki.xlx.pl