...
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.
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) } |
...