ćwiczę funkcje z parametrami domyślnymi i napisałem dwa programy, zawieraja strukture zainicjalizowana, potem wywolanie funkcji z parametrami domyslnymi i potem wywoalnie funkcji z ustawionymi parametrami, pierwszy kod dziala drugi wyrzuca bzdury, a dokladnie zmienia tylko wartosc waga.
#include <iostream>
using namespace std;
struct batonik
{
string marka;
float waga;
int kalorie;
};
batonik mars
{
"nic", 0, 0
};
void wypelnij(batonik & mars, string Marka="millenium milch",float Waga=2.85,int kalorie=350);
void pokaz(const batonik & mars);
int main()
{
pokaz(mars);
wypelnij(mars);
pokaz(mars);
wypelnij(mars,"snickers",3.22,230);
pokaz(mars);
return 0;
}
void wypelnij(batonik & mars, string Marka,float Waga,int kalorie)
{
mars.marka=Marka;
mars.waga=Waga;
mars.kalorie=kalorie;
}
void pokaz(const batonik & mars)
{
cout<<mars.marka<<endl;
cout<<mars.waga<<endl;
cout<<mars.kalorie<<endl;
}
Powyzszy kod dziala a ponizszy nie a wydaje mi sie, ze sa niemal identyczne, drugi kod:
#include <iostream>
using namespace std;
struct fura
{
string nazwa;
int waga;
int wysokosc;
};
fura fiat
{
"UNO",1100,12
};
void wpisz(fura & fiat, string Nazwa="PALIO",int Waga=1200, int Wysokosc=14);
void pokaz(const fura & fiat);
int main()
{
pokaz(fiat);
wpisz(fiat);
pokaz(fiat);
wpisz(fiat,"SIENA",1300,15);
pokaz(fiat);
return 0;
}
void wpisz(fura & fiat, string Nazwa,int Waga, int Wysokosc)
{
fiat.nazwa=Nazwa;
fiat.waga=Waga;
fiat.nazwa=Wysokosc;
}
void pokaz(const fura & fiat)
{
cout<<fiat.nazwa<<endl;
cout<<fiat.waga<<endl;
cout<<fiat.wysokosc<<endl;
}
i jeszcze mam pytania czy te przypisanie w funkcji wypelnij (pierwszy kod) i wpisz(drugi kod) sa dobrze zrobione bo chyba funkcja nie musi znac prawdziwych nazw zmiennych, a inaczej nie chce to hulać. Ktoś mógłby to zoptymalizować?