Što je preopterećenje u C ++?

C ++ omogućava pisanje fleksibilnog i lako razumljivog koda koristeći koncept poznat kao Preopterećenje. Omogućuje postizanje različitih funkcionalnosti unutar postojećeg koda uz vrlo minimalne promjene, smanjujući tako duplikat koda. U osnovi postoje uglavnom dvije primarne vrste preopterećenja koje podržavaju C ++.

C ++ omogućava nam pisanje funkcija s istim imenom, ali s razlikom u tipovima podataka ili u broju argumenata koji su mu predani, ova je značajka poznata pod nazivom Function Overloading u C ++. Ova značajka omogućuje programerima da definiraju funkcije s istim imenom u istom opsegu. Sa istim nazivom, funkcije predstavljaju istu funkcionalnost omogućujući tako postizanje polimorfizma u kompilacijskom vremenu. Preopterećenje funkcije ima jednu prednost što poboljšava čitljivost koda.

Postoji još jedna značajka u C ++ koja omogućava redefiniranje postojeće funkcionalnosti ugrađenih operatera koja je poznata i kao Preopterećenje operatora . Ova značajka omogućuje upotrebu ugrađenih operatora na tipovima definiranim od strane korisnika. Preopterećenje operatora pojednostavljuje kôd redefiniranjem funkcionalnosti prema korisničkim zahtjevima. U ovom ćemo se članku usredotočiti i na preopterećenje funkcija i na preopterećenje operatora, vidjet ćemo detalje i kako se koristi u C ++.

Kako preopterećenje djeluje na C ++?

  • Preopterećenje funkcije: Omogućuje nam definiranje funkcije s istim nazivom, ali razlikuje funkcije ovisno o vrsti parametara koji su im proslijeđeni ili broju parametara koji su im proslijeđeni. Dakle, sve će funkcije imati isti naziv, ali imat će ili različitu vrstu podataka ili će imati različit broj parametara koji su mu preneseni. Kad se funkcija nazove, prevoditelj će odabrati funkciju s vrstom podudaranja i podudaranjem broja argumenata. Sada njegovi programeri mogu odabrati koju će funkciju nazvati u skladu sa zahtjevima. Oni mogu odabrati odgovarajuću funkciju prosljeđivanjem parametara koji slijede pravila.
  • Preopterećenje operatora: Omogućuje operaterima rad za korisnički definirane tipove podataka tj. Klase. Postojeći operatori su preopterećeni i daju im snage da rade na korisničkoj definiranoj klasi i objektima. Preopterećenje operatera postiže se definiranjem funkcije posebnim imenom. Funkcija će imati ime „operator“, a zatim simbol operatora. Simbol operatera možemo koristiti izravno na korisnički definiranom tipu podataka i izvesti operaciju. Potrebno djelovanje ili operacija definirana je u toj posebnoj funkciji kod nas. Pomoću preopterećenja operatora možemo izvoditi operacije različitih vrsta na istoj vrsti podataka.

Vrste preopterećenja u C ++

Funkcija Preopterećenje se može postići na bilo koji način u pogledu upotrebe parametara. Kad kažemo upotreba parametara na koje se odnosi, vrstu parametara ili brojanje parametara ili redoslijed parametara. Dakle, funkcija calc (int x, float y) koja ima parametre (int x, float y) razlikuje se od funkcije definirane kao calc (float x, int y) koji imaju različite parametre s različitim tipom podataka.

Može postojati više vrsta kod kojih se može postići preopterećenje funkcije. Pogledajmo jednostavan primjer preopterećenja funkcije u C ++.

#include
using namespace std;
class Display (
public:
static void show (char message() ) (
cout<< "Only Message:" << message << endl;
)
static void show (int messageId, char message()) (
cout<< "Message with Id:";
cout << messageId << " Message:" << message << endl;
)
);
int main (void) (
Display obj;
char message() = "Welcome";
int messageId = 10;
obj.show(message); //calling overloaded function with 1 parameter
obj.show(messageId, message);//calling overloaded function with 2 parameters
return 0;
)

Ovdje imamo klasu Display koja ima prikaz preopterećenog postupka. Metoda show će se pozvati ovisno o argumentima koji su joj predani.

Izlaz:

Jedina poruka: Dobrodošli

Poruka s ID-om: 10 Poruka: Dobrodošli

Preopterećenje operatora može se postići na gotovo svim ugrađenim tipovima podataka dostupnim u C ++. Ne postoje takve različite vrste preopterećenja operatera, ali pristupi mogu biti različiti koji se koriste za postizanje preopterećenja operatera. Operatori poput Unarne, Binarne, Relacijske, Dodjeljivanje itd. Mogu biti preopterećeni u C ++.

Pogledajmo jednostavan primjer preopterećenja ++ operatora. U ovom ćemo primjeru umjesto primitivnog tipa podataka upotrijebiti operator ++ na korisničkom objektu klase.

#include
using namespace std;
class Bike (
private:
int height;
public:
Bike (): height (80) () //constructor which initializes the height variable
void operator ++() (
height = height + 5;
)
void Specs () (
cout << "The height of the bike is: " < )
);
int main(void)
(
Bike bike;
bike.Specs();
++bike; //calling overloaded operator
bike.Specs();
return 0;
)
#include
using namespace std;
class Bike (
private:
int height;
public:
Bike (): height (80) () //constructor which initializes the height variable
void operator ++() (
height = height + 5;
)
void Specs () (
cout << "The height of the bike is: " < )
);
int main(void)
(
Bike bike;
bike.Specs();
++bike; //calling overloaded operator
bike.Specs();
return 0;
)

Dakle, imamo objekt čija će se početna visina postaviti na 80, a povećati se za 5 kada preko njega pozovemo ++ operatora.

Izlaz:

Visina bicikla je: 80
Visina bicikla je: 85

Pravila preopterećenja u C ++

Ispod su različita C ++ pravila preopterećenja na sljedeći način:

Pravila za preopterećenje funkcije

  • U preopterećenju funkcije, funkcija se mora razlikovati u pogledu vrste podataka, broja ili slijeda parametara. Ne može se jednostavno razlikovati na temelju vrste povratka.

Pravila za preopterećenje operatera

  • Samo ugrađeni operatori mogu biti preopterećeni, novi operateri ne mogu biti preopterećeni.
  • Postoje četiri operatora koja se ne mogu preopteretiti . (odabir članova), :: (rezolucija opsega), . * (odabir člana pomoću pokazivača na funkciju) i?: (ternarni operator).
  • Preopterećeni operator sadrži najmanje jedan operand korisničkog definiranog tipa podataka.
  • Postoje određeni operatori koji se ne mogu preopteretiti uporabom funkcije prijatelja, ali mogu se preopteretiti kao funkcija članica.

Zaključak

Dakle, preopterećenje u C ++ je jedinstvena značajka koja nam pruža višestruke prednosti. Postoje uglavnom dvije vrste preopterećenja, tj. Preopterećenje funkcija i preopterećenje operatera. Preopterećenje funkcije poboljšava čitljivost koda čime se zadržava isti naziv za istu radnju. Preopterećenje operatera omogućava redefiniranje postojeće funkcionalnosti operatora, dajući im posebno značenje. Oboje su vrlo korisni u programiranju na C ++.

Preporučeni članci

Ovo je vodič za preopterećenje u C ++. Ovdje smo raspravljali o njegovom radu, pravilima i dvije vrste preopterećenja u c ++, tj. Preopterećenju funkcije i preopterećenju operatera. Možete pogledati i sljedeći članak da biste saznali više -

  1. Preopterećenje u PHP-u
  2. Kopiraj konstruktor u C ++
  3. Preopterećenje vs Prevladavanje
  4. Izjava o prebacivanju na C ++
  5. Preopterećenje u Javi
  6. Python preopterećenje

Kategorija: