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.
Palautustyyppiä ei voi ylikuormittaa.
Esimerkki 1. Funktioiden ylikuormitus.
.h:
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 };
.cpp:
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; }
main:
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) }