c++
frustracja: C++ Przeciążanie funkcji
Czy w tym wypadku przeciążanie działa tak jak powinno?
Jak wywołać funkcje które mają taką samą nazwę i zestaw argumentów?(w ogóle jest to możliwe?)
#include <iostream>
using namespace std;
int pole (int);
float pole (float);
int pole (int, int);
int main()
{
int wybor,iwynik;
float fwynik;
cout << "Jakie pole chcesz policzyc? \n 1.kwadrat \n 2.kolo \n 3.prostakat" << endl;
cin >> wybor;
switch(wybor)
{
case 1:
int bok;
cout << "Podaj dlugosc boku: ";
cin >> bok;
iwynik = pole(bok);
cout << iwynik;
break;
case 2:
float promien;
cout << "Podaj promien okregu: ";
cin >> promien;
fwynik = pole(promien);
cout << fwynik;
break;
case 3:
int a,b;
cout << "Podaj pierwszy bok: ";
cin >> a;
cout << "Podaj drugi bok: ";
cin >> b;
iwynik = pole(a,b);
cout << iwynik;
break;
default:
cout << "Nie ma takiej opcji";
}
return 0;
}
int pole (int bok)
{
return bok*bok;
}
float pole (float promien)
{
return 3.14 * promien * promien;
}
int pole(int a, int b)
{
return a*b;
}
11 gru 22:29
Dziadek Mróz:
Jak wywołać funkcje które mają taką samą nazwę i zestaw argumentów?(w ogóle jest to
możliwe?)
To właśnie wyróżnia C++ od C.
Masz dwie funkcje o tej samej nazwie, a każda robi co innego.
Kompilator najpierw sprawdza jakiego typu zmienne są przekazywane do funkcji a później
porównuje je z listą dostępnych funkcji.
To tak jak chowanie wypranych majtek do szuflady w komodzie. Wiesz że szukasz szuflady z
majtkami, więc otwierasz szuflady, porównujesz wyprane majtki do skarpetek, koszulek i majtek,
chowasz majtki.
Masz trzy szuflady, tej samej długości i koloru, a każda przechowuje (robi) co innego. Łapiesz?
11 gru 22:59
Dziadek Mróz:
Użyj debugowania tekstowego:
#include <iostream>
int pole(int);
float pole(float);
int pole(int, int);
int main() {
int wybor, iwynik;
float fwynik;
std::cout << "Jakie pole chcesz policzyc? \n 1.kwadrat \n 2.kolo \n 3.prostakat" <<
std::endl;
std::cin >> wybor;
switch (wybor) {
case 1:
int bok;
std::cout << "Podaj dlugosc boku: ";
std::cin >> bok;
iwynik = pole(bok);
std::cout << iwynik;
break;
case 2:
float promien;
std::cout << "Podaj promien okregu: ";
std::cin >> promien;
fwynik = pole(promien);
std::cout << fwynik;
break;
case 3:
int a,b;
std::cout << "Podaj pierwszy bok: ";
std::cin >> a;
std::cout << "Podaj drugi bok: ";
std::cin >> b;
iwynik = pole(a,b);
std::cout << iwynik;
break;
default:
std::cout << "Nie ma takiej opcji";
}
return 0;
}
int pole(int bok) {
std::cout << "pole(int)\n";
return bok*bok;
}
float pole(float promien) {
std::cout << "pole(float)\n";
return 3.14*promien*promien;
}
int pole(int a, int b) {
std::cout << "pole(int, int)\n";
return a*b;
}
11 gru 23:00