Wiki Markup |
---|
h2. Ylikuormitus
|
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 |
Code Block |
---|
}Palautustyyppiä ei voi ylikuormittaa. |
Esimerkki 1. Funktioiden ylikuormitus.
.h:
.{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} |