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 |
---|
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:
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; } |
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) } |