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. |
Esimerkki 1. Funktioiden ylikuormitus.
.h:
Code Block |
---|
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 Block |
---|
} 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 Block |
---|
} 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} |