I C går det inte, men i C++ gör man så här:
void enFunktion(int a, int b, int c = 0)
{
return;
}
Om du sedan anropar enFunktion(1, 2); så kommer c att få värdet 0.
5 svar · 912 visningar · startad av noshornin
Jag vet inte ens om det kallas så men det jag undrar är om det är möjligt att skriva en funktion med säg totalt 3 parametrar:
void enFunktion(int a, int b, int c)
{
//blabla
}
Och sen kalla på funktionen och bara ange 2 parametrar:
enFunktion(1,2);
alltså jag vill att parametern c inte ska behöva anges men ska kunna anges.
Någon som vet om det är möjligt och hur man då ska skriva.
I C går det inte, men i C++ gör man så här:
void enFunktion(int a, int b, int c = 0)
{
return;
}
Om du sedan anropar enFunktion(1, 2); så kommer c att få värdet 0.
Tackar!
Det finns inget som hindrar att man gör en extrafunktion för att komma runt det hela i C
void enFunktion(int a, int b, int c)
{
//blabla
}
void enFunktion(int a, int b)
{
enFunktion(a, b, 0);
}
Överlagring av metoder kan man väl göra i alla OO språk, men inte många av dom stödjer "Optional parameters" som rent generellt anses vara "vackrare" kod än överlagring på metoder.
Men visst, det finns inget hinder att överlagra
Ursäkta O/T, men:
Överlagring av metoder kan man väl göra i alla OO språk
Nja, överlagring och OO har inget med varandra att göra, det är nog snarare kopplat till statisk typning (se t.ex. http://corfield.org/entry/Overloading_is_not_OO). Som exempel finns överlagring inte i vare sig Python, Ruby, Objective-C eller Smalltalk (de två sistnämnda har infixnotation av metodnamn vilket gör att man aldrig vill överlagra någonting igen).