Toiminnon ylikuormitus C ++: ssa: kaikki mitä sinun tarvitsee tietää



Tämä artikkeli antaa sinulle yksityiskohtaisen ja kattavan tiedon toimintojen ylikuormituksesta C ++: ssa, ja siinä on paljon ymmärrettäviä esimerkkejä.

C ++ on yksi niistä joustavista ohjelmointikielistä, joka kattaa myös useita olio-ohjelmoinnin ominaisuuksia. Ylikuormitus on toinen tämän ohjelmointikielen ominaisuus.Seuraavat osoittimet käsitellään tässä artikkelissa 'Toiminnon ylikuormitus C ++: ssa'.

C ++ ylikuormitus

Kun luomme kaksi tai useampia luokan jäseniä, joilla on sama nimi, mutta erilaiset parametrit tai lukumäärä, se tunnetaan nimellä C ++ ylikuormitus. C ++: ssa voimme ylikuormittaa:





  • menetelmät,
  • rakentajat ja
  • indeksoidut ominaisuudet

Ylikuormitustyypit C ++: ssa

types-of-overloading-in-c++

Mitä toimintojen ylikuormitus on C ++: ssa?

Funktion ylikuormitus C ++: ssa voidaan määritellä prosessiksi, jossa luokan kahdella tai useammalla jäsenfunktiolla on sama nimi, mutta parametrit ovat erilaiset. Funktion ylikuormituksessa funktio voidaan määritellä uudelleen käyttämällä erityyppisiä argumentteja tai erilaista argumenttien määrää vaatimuksen mukaan. Vain näiden erojen avulla kääntäjä voi erottaa kaksi ylikuormitettua toimintoa.



Yksi toimintojen ylikuormituksen tärkeimmistä eduista on, että se lisää ohjelman luettavuutta, koska meidän ei tarvitse käyttää eri nimiä samaan toimintoon uudestaan ​​ja uudestaan.

Muuttamalla argumenttien lukumäärää

Tällä tavoin toimintojen ylikuormitusta määritellään kaksi funktiota, joilla on samat nimet, mutta eri määrä samantyyppisiä parametreja. Esimerkiksi alla mainitussa ohjelmassa olemme tehneet kaksi lisäysfunktiota palauttamaan kahden ja kolmen kokonaisluvun summan.

// ensimmäisen funktion määritelmä 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 }

Tässä add () -funktion sanotaan olevan ylikuormitettu, koska sillä on kaksi määritelmää, joista toinen hyväksyy kaksi ja toinen kolme argumenttia. Mikä add () -funktio kutsutaan, riippuu argumenttien lukumäärästä.



int main () {add (10, 20) // add () 2 parametrilla kutsutaan add (10, 20, 30) // summa () 3 parametrilla kutsutaan}
#include käyttämällä nimitilaa std int add (int a, int b) {cout<< a+b <

Yllä olevassa esimerkissä ylikuormitamme add () -funktiota muuttamalla sen argumenttien määrää. Ensin määritellään add () -funktio kahdella parametrilla, sitten ylikuormitamme sen määrittelemällä uudelleen add () -funktion, mutta tällä kertaa kolmella parametrilla.

Ottaen erityyppisiä argumentteja

Tässä menetelmässä määritellään kaksi tai useampia funktioita, joilla on sama nimi ja sama määrä parametreja, mutta näille parametreille käytetty tietotyyppi on erilainen. Esimerkiksi tässä ohjelmassa meillä on kolme add () -funktiota, ensimmäinen saa kaksi kokonaislukua, toinen saa kaksi float-argumenttia ja kolmas kaksi kaksoisargumenttia.

android studio -opastus aloittelijoille
#include käyttämällä nimitilaa std int add (int x, int y) // ensimmäinen määritelmä {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) }

Yllä olevassa esimerkissä määritämme add () -funktion kolme kertaa. Ensin käytetään kokonaislukuja parametreina, toisena kelluketta parametrina ja kolmanneksi kaksoisparametrina.
Siksi ohitamme add () -funktion kahdesti.

Toiminnan edut Ylikuormitus C ++: ssa

  • Käytämme toimintojen ylikuormitusta ohjelmamme muistitilan, yhdenmukaisuuden ja luettavuuden säästämiseen.

  • Käyttöfunktion ylikuormituskonseptin avulla voimme kehittää useita toimintoja samalla nimellä

  • Funktion ylikuormitus osoittaa polymorfismin käyttäytymisen, joka antaa meille mahdollisuuden saada erilainen käyttäytyminen, vaikka toiminnon samaa nimeä onkin olemassa.

  • Toimintojen ylikuormitus nopeuttaa ohjelman suorittamista.

  • Toimintojen ylikuormitusta käytetään koodin uudelleenkäytettävyyteen ja myös muistin säästämiseen.

  • Se auttaa sovellusta lataamaan luokan menetelmän parametrityypin perusteella.

  • Koodin ylläpito on helppoa.

Toiminnan haitat Ylikuormitus C ++: ssa

  • Toimintoilmoituksia, jotka eroavat vain palautustyypiltään, ei voida ylikuormittaa toimintojen ylikuormitusprosessilla.
  • Jäsenfunktiodeklarointeja, joilla on samat parametrit tai samantyyppiset nimityypit, ei voida ylikuormittaa, jos jokin niistä on ilmoitettu staattisena jäsenfunktiona.
  • luokka XYZ {staattinen void func () void func () // virhe}

Toiminto ylikuormitus ja epäselvyys

Kun kääntäjä ei pysty päättämään, minkä toiminnon sen pitäisi ensin vedota ylikuormitettujen toimintojen joukossa, tämä tilanne tunnetaan funktion ylikuormitettavana epäselvyytenä. Kääntäjä ei suorita ohjelmaa, jos siinä on epäselvyysvirhe. Toiminnan syyt Epäselvyyden ylikuormittaminen:

saada matriisin js pituus
  • Kirjoita muunnos.
  • Toiminto oletusarvoilla.
  • Toiminta viitteellisen passin kanssa

Tyyppimuunnos:

#include nimitilan käyttäminen std void-funktio (float) void-funktio (int) void-funktio (float x) {std :: cout<< 'Value of x is : ' <

Yllä oleva esimerkki heittää virheen - 'ylikuormitetun funktion kutsu (kaksinkertainen)' on epäselvä. Toiminto (3.4) kutsuu ensimmäisen toiminnon. Funktio (34) kutsuu toista funktiota ennusteen mukaan. Mutta näin ei tapahdu, koska C ++: ssa kaikkia liukulukuvakioita käsitellään kaksinkertaisina eikä kelluvina. Jos korvataan kelluva muuttuja kaksinkertaiseksi muuttujaksi, ohjelma toimii hyvin. Siksi kutsumme tätä tyypin muuntovirheeksi kelluvasta kaksinkertaiseksi.

Toiminto oletusargumenteilla:

#include käyttämällä nimiavaruutta std void-funktio (int) void-funktio (int, int) void-funktio (int x) {std :: cout<< 'Value of x is : ' <

Yllä oleva esimerkki antaa virheen sanoen 'ylikuormitetun' hauskan (int) 'kutsu on epäselvä', koska funktiota (int y, int z = 12) voidaan kutsua kahdella tavalla:

  1. Kutsu funktio yhdellä argumentilla (ja se ottaa automaattisesti arvon z = 12)
  2. Kutsumalla funktio kahdella argumentilla.

Kun kutsumme funktiota: funktio (12), täytämme täysin sekä funktion (int) että funktion (int, int) ehdon, joten kääntäjä joutuu epäselvyyteen, mikä osoittaa virheen.

Tehtävä viitteellä

mikä on jatko-todistus
#include nimitilan käyttäminen std void-funktio (int) void-funktio (int &) void-funktio (int a) {std :: cout<< 'Value of a is : ' < 

Yllä oleva ohjelma antaa virheen sanomalla 'ylikuormitetun' hauskan (int &) 'kutsu on epäselvä. Kuten näemme, ensimmäinen funktio vie yhden kokonaisluvun argumentin ja toinen funktio ottaa viiteparametrin argumenttina. Tässä tapauksessa kääntäjä ei pysty ymmärtämään, mitä toimintoa käyttäjä tarvitsee, koska hauskan (int) ja hauskan (int &) välillä ei ole syntaktista eroa, joten se aiheuttaa epäselvyyden virheen.

Tämän avulla olemme päässeet loppuun toiminnon ylikuormituksesta C ++: ssa. Jos haluat oppia lisää, tutustu Edureka, luotettava verkko-oppimisyritys. Edurekan Java J2EE- ja SOA-koulutus- ja sertifiointikurssit on suunniteltu kouluttamaan sekä ydin- että edistyneitä Java-konsepteja sekä erilaisia ​​Java-kehyksiä, kuten Hibernate & Spring.

Onko sinulla kysymys meille? Mainitse se tämän blogin kommenttiosassa ja otamme sinuun yhteyttä mahdollisimman pian.