Anularea funcției C ++

C Function Overriding



În acest articol, vom acoperi suprascrierea funcțiilor în limbajul de programare C ++. C ++ acceptă polimorfismul în timpul rulării.

În funcția de suprascriere, clasa copil redefinește funcția care este deja definită în clasa sa părinte.







Acesta permite programatorului să ofere funcționalități derivate specifice clasei (chiar dacă este definită în clasa de bază).



Acum, vom vedea câteva exemple și vom înțelege conceptul de suprascriere a funcției în C ++.



Exemplul-1

Am definit două clase în exemplul de cod de mai jos - o clasă de bază și o clasă derivată. Clasa de bază are o funcție de membru, adică disp (). Derived_Class este moștenit de la Base_Class. Funcția disp () este prezentă în Base_Class și apoi redefinită în Derived_Class.





În funcția main (), se creează un obiect din Derived_Class, adică d. Apoi, numim funcția disp () pe obiectul clasei derivate, deci funcția din clasa derivată va fi invocată. Versiunea clasei de bază este ignorată aici. Puteți vedea mai jos funcția de ieșire ca - disp () în clasa derivată.

#include

folosind spațiul de nume std;

// clasa de bază
clasa Base_Class
{
public:
nulfolos()
{
cost<< „funcția disp () în clasa de bază.” <<endl;
}

};

// clasa derivata
clasa Derived_Class:public_Base_Class
{
public:
nulfolos()
{
cost<< „funcția disp () în clasa derivată” <<endl;
}
};

intprincipal()
{
Derivat_Clasă d;
d.folos(); // disp () funcție pe obiectul de clasă derivat
întoarcere 0;
}



Exemplul-2

În acest exemplu, vom vedea cum să apelăm în mod deliberat versiunea clasei de bază a funcției prin obiectul clasei derivate. În definiția funcției de clasă derivată, folosim operatorul de rezoluție a scopului [::] pentru a apela versiunea de clasă de bază a funcției.

#include

folosind spațiul de nume std;

clasa Base_Class
{
public:
nulfolos()
{
cost<< „funcția disp () în clasa de bază.” <<endl;
}

};

clasa Derived_Class:public_Base_Class
{
public:
nulfolos()
{
Clasa_bază::folos(); // Apelați versiunea din clasa de bază a disp ()
}
};

intprincipal()
{
Derivat_Clasă d;
d.folos();
întoarcere 0;
}

Exemplul-3

Acesta este un alt exemplu de suprascriere a funcției. În acest exemplu, am creat o clasă părinte - Animal și două clase derivate - Rață și câine. Clasa de bază, adică clasa Animal, are un sunet de funcție membru ().

În clasa derivată / clasă copil, adică Dog, am redefinit aceeași funcție, adică sunet (), pentru a înlocui definiția clasei de bază. În mod similar, în cealaltă clasă derivată, adică Duck, am redefinit aceeași funcție, adică sunetul ().

În funcția main (), am creat obiectul câine al câinelui și rața de rață. Deci, acum, când apelăm funcția sound () pentru câine și rață, va apela versiunea de clasă derivată a funcției sound (). Puteți vedea ieșirea programului așa cum se arată mai jos. Deci, cu ajutorul funcției suprascrise, putem invoca funcția derivată specifică clasei.

#include

folosind spațiul de nume std;

clasa Animal
{
public:
nulsunet()
{
cost<< 'Sunet animal!' <<endl;
}

};

// Clasa derivată - Clasa câinilor
clasa Câine:public Animal
{
public:
nulsunet()
{
cost<< „Sunetul câinilor - scoarță”. <<endl;
}
};

// Clasa derivată - Clasa de rață
clasa Duck:public Animal
{
public:
nulsunet()
{
cost<< - Sunet de rață - șarlatan. <<endl;
}
};


intprincipal()
{
Câine câine;
Rață de rață;

câine.sunet(); // sunet () de câine
rață.sunet(); // sunet () de rață

întoarcere 0;
}

Concluzie

În acest articol, am explicat funcția care suprascrie în C ++ . Limbajul C ++ acceptă polimorfismul în timpul rulării. Anularea funcției ajută la obținerea polimorfismului în timp de execuție în C ++. Acest articol a analizat conceptul de suprascriere a funcției și cum se realizează polimorfismul în timpul rulării utilizând suprascrierea funcției.