Sobes.tech
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ā