Перегрузка функций. Funktsioonide ümberlaadimine.
С++ позволяет создавать несколько разных функций с одинаковым именем. Это называется перегрузкой функций. C++ lubab koostada funktsioonid ühega nimega. See on funktsiooni ümberlaadimine. Эти функции должны отличаться друг от друга списками параметров: типом или количеством параметров либо тем и другим одновременно. Ümberlaadimisel funktsioonidel on erinevad parameetri tüüpid või parameetri kogus.
Например Näiteks, int myfunc (int, int); //2 täisarvu int tüübi parameetri t int myfunc(long, long); //2 täisarvu double tüübi parameetri t int myfunc(long); //1 long tüübi parameeter Функция перегружена с тремя разными списками параметров. Funktsioon on ümberlaaditud mitmesugusega parameetri de ga. Типы возвращаемых значений перегруженных функций могут быть одинаковыми или разными. Funktsiooni tüübid võivad olla samasugused.
В результате перегрузки функций происходит явление, называемое полиформизмом функций. Funktsioonide ümberlaadimine tekitab lähedusefekti, mida nimetatakse polüformismiks. При вызове функций компилятор определяет функцию по совпадению параметров. Funktsiooni väljakutsumisel kontrollib kompilaator parameetreid.
Näide 1 : функция, которая удваивает передаваемое ей значение (int, long, float, double). // ümberlaaditud funktsioon nimega Double int Double (int); long Double (long); float Double ( float); double Double (double); int main() {int A=6500; long B=65000; float C=6.5F; double De=6.5e20; cout
// long Double (long param) { cout
Näide 2. Maksimum kolmest arvudest. //funktsiooni prototyybid int MAX(int, int); double MAX (double, double); //********************************************************* void main() { int a,b,c; //deklareerime 3 täisarvu cout >a>>b>>c; //sisund klaviatuurilt //kutsume välja funktsiooni MAX 2 korda cout >a1>>b1>>c1; //sisund klaviatuurilt //kutsume välja funktsiooni MAX 2 korda cout
//****************************************************** int MAX( int x, int y) //funktsioon otsib kahest arvust maksimaalset { if (x>=y) return x; //kui x rohkem või võrdub y, tagastab x, // sest x on suurem kui y else return y; //muidu tagastab y } //**************************************************************** doubleMAX(double x, double y) //funktsioon otsib kahest arvust maksimaalset { if (x>=y) return x; //kui x rohkem või võrdub y, tagastab x, sest x on //suurem kui y else return y; //muidu tagastab y } //****************************************************************