h2. Ylikuormitus
C+\+ tarjoaa ohjelmoijalle mahdollisuuden ylikuormittaa funktioita. Tällä tarkoitetaan sitä, että voi olla samannimisiä funktioita, jotka eroavat parametrien lukumäärässä. Kutsuttava funktio tunnistetaan parametrien tyypistä. Muodostimien kanssa käytetään usein ylikuormitusta.
{note}Palautustyyppiä ei voi ylikuormittaa.{note}
!ylikuormitus.png|border=1!\\
h3. Esimerkki 1. Funktioiden ylikuormitus.
.h:
{code}
class CElain
{
private: // saatavissa vain luokan metodeilla
char m_Nimi[100];
float m_Massa;
public: // voidaan käyttää luokan ulkopuolelta
bool AsetaTiedot(char Nimi[], float Massa); // 'Alkuperäinen metodi'
bool AsetaTiedot(char Nimi[]); // 1. Ylikirjoitettu funktio
bool AsetaTiedot(float Massa); // 2. ylikirjoitettu funktio
};
{code}
.cpp:
{code}
bool CElain::AsetaTiedot(char Nimi[], float Massa)
{
printf("AsetaTiedot(char[], float)\n");
AsetaTiedot(Nimi);
AsetaTiedot(Massa);
return true;
}
bool CElain::AsetaTiedot(char Nimi[])
{
printf("AsetaTiedot(char[])\n");
strcpy(m_Nimi, Nimi);
return true;
}
bool CElain::AsetaTiedot(float Massa)
{
printf("AsetaTiedot(float)\n");
m_Massa = Massa;
return true;
}
{code}
main:
{code}
int main()
{
CElain kissa;
kissa.AsetaTiedot("Miuku", 2.4); // kutsuu metodia AsetaTiedot(char Nimi[], float Massa)
kissa.AsetaTiedot("Mauku"); // kutsuu metodia AsetaTiedot(char Nimi[])
kissa.AsetaTiedot(2.4); // kutsuu metodia AsetaTiedot(float Massa)
}
{code} |