Funkcijas pārslodze C ++: viss, kas jums jāzina



Šis raksts sniegs jums detalizētas un visaptverošas zināšanas par funkciju pārslodzi C ++ versijā ar saprotamiem piemēriem.

C ++ ir viena no tām programmēšanas valodām, kas ir ļoti elastīga, un tā aptver arī vairākas objektorientētās programmēšanas iezīmes. Pārslodze ir vēl viena šīs programmēšanas valodas iezīme.Sekojošie rādītāji tiks aplūkoti šajā rakstā “Funkciju pārslodze C ++” -

C ++ Pārslodze

Kad mēs izveidojam divus vai vairākus klases locekļus ar tādu pašu nosaukumu, bet atšķiras pēc parametru skaita vai veida, to sauc par C ++ pārslodzi. Programmā C ++ mēs varam pārslogot:





  • metodes,
  • konstruktori un
  • indeksētas īpašības

Pārslodzes veidi C ++

types-of-overloading-in-c++

java atrod masīvā lielāko skaitu

Kas ir funkciju pārslodze C ++ versijā?

Funkcijas Pārslodzi C ++ var definēt kā procesu, kurā ir divas vai vairākas klases dalībnieku funkcijas ar tādu pašu nosaukumu, bet parametros atšķiras. Funkcijas pārslodzes gadījumā funkciju var no jauna definēt, izmantojot dažāda veida argumentus vai atšķirīgu argumentu skaitu atbilstoši prasībai. Tikai pateicoties šīm atšķirībām, kompilators var atšķirt abas pārslogotās funkcijas.



Viena no funkciju pārslodzes galvenajām priekšrocībām ir tā, ka tā palielina programmas lasāmību, jo mums nav nepieciešams atkal un atkal izmantot dažādus nosaukumus vienai un tai pašai darbībai.

Mainot argumentu skaitu

Šādā funkciju pārslodzes veidā mēs definējam divas funkcijas ar vienādiem nosaukumiem, bet atšķirīgu viena tipa parametru skaitu. Piemēram, zemāk minētajā programmā mēs esam izveidojuši divas funkcijas add (), lai atgrieztu divu un trīs veselu skaitļu summu.

// pirmās funkcijas definīcija int add (int a, int b) {cout<< a+b } // second overloaded function definition int add(int a, int b, int c) { cout << a+b+c }

Šeit tiek teikts, ka funkcija add () ir pārslogota, jo tai ir divas definīcijas, no kurām viena pieņem divus argumentus, bet otra - trīs argumentus. Kura funkcija add () tiks izsaukta, ir atkarīgs no argumentu skaita.



int main () {add (10, 20) // add () ar 2 parametru tiks saukts add (10, 20, 30) // summa () ar 3 parametriem tiks izsaukta}
#include izmantojot nosaukumvietu std int add (int a, int b) {cout<< a+b <

Iepriekš minētajā piemērā mēs pārslogojam funkciju add (), mainot tās argumentu skaitu. Pirmkārt, mēs definējam funkciju add () ar diviem parametriem, pēc tam to pārslogojam, atkal definējot funkciju add (), bet šoreiz ar trim parametriem.

Ar dažādu veidu argumentiem

Šajā metodē mēs definējam divas vai vairākas funkcijas ar tādu pašu nosaukumu un vienādu parametru skaitu, bet šiem parametriem izmantotais datu tips ir atšķirīgs. Piemēram, šajā programmā mums ir trīs funkcija add (), pirmais iegūst divus veselā skaitļa argumentus, otrais - divus peldošos argumentus, bet trešais - divus dubultos argumentus.

#include izmantojot nosaukumvietu std int add (int x, int y) // pirmā definīcija {cout<< x+y << endl return 0 } float add(float a, float b) { cout << a+b << endl return 0 } double add(double x, double y) { cout << x+y << endl return 0 } int main() { add(20, 40) add(23.45f, 34.5f) add(40.24, 20.433) }

Iepriekš minētajā piemērā mēs trīs reizes definējam funkciju add (). Pirmkārt, kā parametrus izmantojiet veselus skaitļus, otrkārt, kā parametrus izmantojiet pludiņu un, treškārt, kā parametru izmantojiet dubultu.
Tādējādi mēs divas reizes ignorējam funkciju add ().

Funkcijas pārslodzes priekšrocības C ++

  • Mēs izmantojam funkciju pārslodzi, lai ietaupītu atmiņas vietu, konsekvenci un mūsu programmas lasāmību.

  • Izmantojot izmantošanas funkcijas pārslodzes koncepciju, mēs varam izstrādāt vairākas funkcijas ar tādu pašu nosaukumu

  • Funkciju pārslodze parāda polimorfisma uzvedību, kas ļauj mums iegūt atšķirīgu uzvedību, lai gan būs kāda saite, izmantojot to pašu funkcijas nosaukumu.

  • Funkciju pārslodze paātrina programmas izpildi.

  • Funkciju pārslodze tiek izmantota kodu atkārtotai izmantošanai un arī atmiņas saglabāšanai.

  • Tas palīdz lietojumprogrammai ielādēt klases metodi, pamatojoties uz parametra tipu.

    kā mainīt veselu skaitli pitonā
  • Kodu uzturēšana ir vienkārša.

Funkcijas pārslodzes trūkumi C ++

  • Funkciju deklarācijas, kas atšķiras tikai pēc atgriešanās veida, nevar pārslogot ar funkciju pārslodzes procesu.
  • Dalībnieku funkciju deklarācijas ar vienādiem parametriem vai vienādiem nosaukuma tipiem nevar pārslogot, ja kāda no tām ir deklarēta kā statiska dalībnieka funkcija.
  • klase XYZ {static void func () void func () // kļūda}

Funkcijas pārslodze un neskaidrība

Kad kompilators nespēj izlemt, kura funkcija tai jāizsauc vispirms starp pārslogotajām funkcijām, šī situācija ir pazīstama kā funkciju pārslodzes neskaidrība. Sastādītājs nedarbina programmu, ja tajā ir neskaidra kļūda. Funkcijas neskaidrības pārslodzes cēloņi:

  • Ierakstiet reklāmguvumu.
  • Funkcija ar noklusējuma argumentiem.
  • Funkcija ar caurlaidi ar atsauci

Veida konvertēšana:

#include izmantojot nosaukumvietu std void function (float) void function (int) void function (float x) {std :: cout<< 'Value of x is : ' <

Iepriekš minētajā piemērā tiek pieļauta kļūda - “pārslogotas“ funkcijas (dubultā) izsaukums ”nav viennozīmīgs”. Funkcija (3.4) izsauks pirmo funkciju. Funkcija (34) izsauc otro funkciju atbilstoši mūsu prognozēm. Bet tas nenotiek, jo C ++ gadījumā visas peldošā komata konstantes tiek uzskatītas par dubultām, nevis ar pludiņu. Ja mainīgo mainīgo aizstāsim ar dubultu mainīgo, programma darbosies labi. Tāpēc mēs to saucam par tipa pārveidošanas kļūdu no pludiņa uz dubultu.

Funkcija ar noklusējuma argumentiem:

#include izmantojot nosaukumvietu std void function (int) void function (int, int) void function (int x) {std :: cout<< 'Value of x is : ' <

Iepriekš minētajā piemērā ir kļūda, sakot, ka “pārslogota“ fun (int) ”izsaukums ir neskaidrs”, jo funkciju (int y, int z = 12) var izsaukt divējādi:

  1. Izsaucot funkciju ar vienu argumentu (un tā automātiski ņems vērtību z = 12)
  2. Izsaucot funkciju ar diviem argumentiem.

Izsaucot funkciju: function (12), mēs pilnībā aizpildām gan funkcijas (int), gan funkcijas (int, int) nosacījumu, tādējādi sastādītājs nokļūst neskaidrībā, kas parāda kļūdu.

Funkcija ar norādi

#include izmantojot nosaukumvietu std void function (int) void function (int &) void function (int a) {std :: cout<< 'Value of a is : ' < 

Iepriekš minētā programma rada kļūdu, sakot, ka “pārslogota“ fun (int &) ”izsaukums ir neskaidrs”. Kā redzam, pirmā funkcija ņem vienu vesela skaitļa argumentu, bet otrā funkcija kā argumentu ņem atsauces parametru. Šajā gadījumā sastādītājs nespēj saprast, kura funkcija ir nepieciešama lietotājam, jo ​​starp jautrību (int) un jautrību (int &) nav sintaktiskas atšķirības, tādējādi tas rada neskaidrību kļūdu.

Ar to mēs esam nonākuši līdz šīs funkcijas pārslodzes beigām C ++. Ja vēlaties uzzināt vairāk, iepazīstieties ar Autors: uzticams tiešsaistes mācību uzņēmums Edureka. Edureka Java J2EE un SOA apmācības un sertifikācijas kurss ir paredzēts, lai apmācītu jūs gan galvenajiem, gan uzlabotajiem Java jēdzieniem kopā ar dažādiem Java ietvariem, piemēram, Hibernate & Spring.

Vai mums ir jautājums? Lūdzu, pieminējiet to šī emuāra komentāru sadaļā, un mēs sazināsimies ar jums pēc iespējas ātrāk.