Junior
Kas ir metožu pārslogojums un pārrakstīšana C++?
sobes.tech AI
Atbilde no AI
Metodes pārslodze (Method Overloading):
- Atļauj vairākus metodes ar tādu pašu nosaukumu vienā klasē.
- Atšķiras pēc paraksta (parametru skaita un/vai tipu).
- Atgrieztā tipa neiesaistās paraksta noteikšanā pārslodzei.
- Konkrēto metodi izvēlas kompilators, pamatojoties uz argumentu tipu izsaukuma laikā (statiskā saistība).
class MyClass {
public:
void print(int a) {
// Izdrukāt veselu skaitli
}
void print(double d) {
// Izdrukāt aritmētisku skaitli
}
void print(int a, int b) {
// Izdrukāt divus veselos skaitļus
}
};
Metodes pārslodze (Method Overloading):
- Atļauj mantojošai klasei nodrošināt specifisku metodes realizāciju, kas jau ir definēta bāzes klasē.
- Mantojošajā klasē metodei jābūt tādam pašam parakstam (nosaukums, parametru skaits un tipi) un tam pašam atgriešanas tipam (vai kovariantam tipam).
- Lieto ar virtuālām funkcijām (
virtual) polimorfisma īstenošanai. - Konkrētā realizācija tiek izvēlēta izpildes laikā (dinamiskā saistība), atkarībā no objekta faktiskā tipa.
class Base {
public:
virtual void display() {
// Bāzes klases realizācija
}
};
class Derived : public Base {
public:
void display() override { // `override` vārds (no C++11) palīdz izvairīties no kļūdām
// Konkrēta realizācija mantošanas klasē
}
};
Galvenās atšķirības:
| Īpašība | Metodes pārslodze | Metodes pārdefināšana |
|---|---|---|
| Piemērošanas vieta | Vienā klasē | Bāzes un mantojošās klasēs |
| Metodes nosaukums | Tas pats | Tas pats |
| Paraksts | Atšķirīgs | Tas pats |
| Izvēles mehānisms | Statiska saistība (kompilācija) | Dzinama saistība (izpildes laikā) |
| Lietojums | Parastās funkcijas | Virituālas funkcijas |
| Mērķis | Rāda dažādas darbības dažādu tipu gadījumā | Konkrēta realizācija mantojumā |