Kurs maturalny z języka angielskiego!
kurs-maturalny-jezyk-angielski

PROGRAMOWANIE I ALGORYTMY

Zajęcia maturalne z informatyki
Olimpiada Informatyczna Juniorów
    Prowadzący: Marcin Kasprowicz
  • właściciel serwisu algorytm.edu.pl
  • wrzesień 2024 — start zajęć
  • czytaj więcej

Przeciążanie nazw funkcji


powrót

Przeciążanie nazw funkcji polega na wielokrotnym wykorzystaniu takiej samej jej nazwy, różniącej się tylko typem i ilością argumentów (przeciążanie funkcji można traktować jako polimorfizm).

Przykład 1

Rozpatrzmy funkcję, która będzie liczyła pole pewnej figury. Pole to uzależnimy od ilości argumentów i ich typów. Funkcja będzie nosiła nazwę Pole.

  • float Pole(float p) - funkcja liczy pole kwadratu
  • double Pole(double p) - funkcja liczy pole koła
  • float Pole(float a,float b) - funkcja liczy pole prostokąta itd.
#include <iostream>
using namespace std;

float Pole(float a)
{
	return a*a;
}

double Pole(double r)
{
	return 3.14*r*r;
}

float Pole(float a,float b)
{
	return a*b;
}

int main()
{
	float a,b;
	double r;
	char opcja;

	cout<<"Wybierz opcję: "<<endl;

	cout<<"1 - pole kwadratu "<<endl;
	cout<<"2 - pole prostokąta "<<endl;
	cout<<"3 - pole koła "<<endl;

	cin>>opcja;

	switch(opcja)
	{
	case '1':
	
		cout<<"Podaj długość boku: "; cin>>a;
		cout<<"Pole kwadratu wynosi "<<Pole(a)<<endl;

		break;
	case '2':

		cout<<"Podaj długość boku a: "; cin>>a;
		cout<<"Podaj długość boku b: "; cin>>b;
		cout<<"Pole prostokąta wynosi "<<Pole(a,b)<<endl;

		break;
	case '3':

		cout<<"Podaj długość promienia: "; cin>>r;
		cout<<"Pole koła wynosi "<<Pole(r)<<endl;

		break;

	default: cout<<"Wybrałeś nieprawidłową opcję!"<<endl;
	}

	return 0;
}

Kiedy nie wolno przeciążać nazw funkcji?

 Do przeciążenia nazwy funkcji nie wystarczy  różny tym zwracanych wartości np.:

int funkcja(int a)
char funkcja(int a)

W przykładzie powyżej, funkcje mają różne zwracane wartości, natomiast takie same argumenty - kompilator wyrzuci błąd!