Ylikuormitus
C++ tarjoaa ohjelmoijalle mahdollisuuden ylikuormittaa funktioita (ja metodeita). Tällä tarkoitetaan sitä, että voi olla samannimisiä funktioita, jotka eroavat parametrien lukumäärässä. Kutsuttava funktio/metodi tunnistetaan parametrien tyypistä. HUOM! palautustyyppiä ei voi ylikuormittaa. Muodostimien kanssa käytetään usein ylikuormitusta.
Esimerkki 3. Metodin ylikuormitus.
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 metodi
bool AsetaTiedot(float Massa); // 2. ylikirjoitettu metodi
};
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;
}
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)
}