Mikä on käyttäjän ylikuormitus?
Käyttämällä operaattorin ylikuormitusta C ++: ssa voit määrittää operaattorille useamman kuin yhden merkityksen yhdessä laajuudessa. Operaattorin ylikuormituksen tarkoituksena on antaa operaattorille erityinen merkitys käyttäjän määrittelemälle tietotyypille.
Operaattorin ylikuormituksen avulla voit määrittää suurimman osan C ++ -operaattoreista. Voit myös käyttää operaattorin ylikuormitusta eri toimintojen suorittamiseen yhdellä operaattorilla.
Tässä C ++ -opetusohjelmassa opit:
- Mikä on käyttäjän ylikuormitus?
- Syntaksi
- Eri lähestymistavat käyttäjän ylikuormitukseen C ++: ssa
- Voidaanko kaikkia C ++ -operaattoreita ylikuormittaa?
- Muistettavaa:
- Kuljettajan ylikuormituksen säännöt:
- Kuinka ylikuormittaa käyttäjää:
Syntaksi
C ++ -operaattorin ylikuormittamiseksi sinun on määriteltävä luokan sisällä erityinen toiminto seuraavasti:
class class_name{… publicreturn_type operator symbol (argument(s)){… }… };
Tässä on selitys yllä olevalle syntaksille:
- Return_type on funktion palautustyyppi.
- Seuraavaksi mainitset operaattorin avainsanan.
- Symboli tarkoittaa ylikuormitettua käyttäjän symbolia. Esimerkiksi +, -, <, ++.
- Argumentti (t) voidaan välittää operaattoritoiminnolle samalla tavalla kuin funktiot.
Esimerkki 1:
#includeusing namespace std;class TestClass {private:int count;public:TestClass() : count(5) {}void operator --() {count = count - 3;}void Display() {cout << "Count: " << count; }};int main() {TestClass tc;--tc;tc.Display();return 0;}
Tuotos:
Tässä on kuvakaappaus koodista:
Koodin selitys:
- Iostream-otsikkotiedoston sisällyttäminen koodiin käyttämään sen toimintoja.
- Sisällytä vakio nimitila ohjelmaamme käyttääksesi luokkia sitä kutsumatta.
- Luo luokka nimeltä TestClass.
- Käytä yksityisen pääsyn muokkausta, joka merkitsee luokan jäsenen yksityisesti käytettävissä olevaksi.
- Luo kokonaisluku muuttujien määrä. Tämä muuttuja on yksityisesti käytettävissä.
- Käytä julkisen pääsyn muokkaajaa, joka merkitsee luokan jäsenen yksityisesti käytettävissä olevaksi.
- Aloita muuttujalaskuri arvoon 5 rakentajalla.
- Ylikuormita operaattorin merkitystä.
- Operaattori vähentää muuttujan x arvoa yhdellä.
- Käyttäjän ylikuormitusosan loppu. Operaattorille on annettu uusi nimi.
- Funktion määrittäminen nimeltä Display () -toiminto.
- Tulosta muuttujien määrän arvo konsolin muun tekstin viereen, kun näyttö () -toimintoa kutsutaan. } Merkitsee Display () -toiminnon rungon loppua.
- Luokan loppu.
- Kutsu main () -toiminto. Ohjelmalogiikka tulisi lisätä tähän toimintoon.
- Luo luokan TestClass esiintymä ja anna sille nimi tc.
- Tämä kutsuu void operator - () - toimintoa.
- Kutsu Display () -toimintoa käyttämällä TestClass-luokan viritystä.
- Funktion on palautettava arvo, kun se on suoritettu onnistuneesti.
- Funktion main () rungon pää.
Eri lähestymistavat käyttäjän ylikuormitukseen C ++: ssa
Voit suorittaa operaattorin ylikuormituksen toteuttamalla minkä tahansa seuraavista toiminnoista:
- Jäsenfunktio
- Muu kuin jäsen -toiminto
- Ystävätoiminto
- Operaattorin ylikuormitustoiminto voi olla jäsenfunktio, kun vasen operandi on luokan kohde.
- Kun vasen operandi on erilainen, käyttäjän ylikuormitustoiminnon tulisi olla jäsenen ulkopuolinen toiminto.
Voit tehdä käyttäjän ylikuormitustoiminnosta ystävätoiminnon, jos sen on käytettävä yksityisiä ja suojattuja luokan jäseniä.
Voidaanko kaikkia C ++ -operaattoreita ylikuormittaa?
Ei. On C ++ -operaattoreita, joita ei voida ylikuormittaa.
Ne sisältävät:
- :: -Skoopin tarkkuuden operaattori
- ?: tavallinen operaattori.
- . -jäsenvalitsin
- Operaattorin koko
- * -jäsenosoittimen valitsin
Muistettavaa:
- Operaattorin ylikuormituksen avulla voit määrittää operaattorin toiminnan uudelleen vain käyttäjän määrittelemille tyyppeille (objektit, rakenteet). Et voi käyttää sitä sisäänrakennettuihin tyyppeihin (float, char, int jne.).
- Operaattorit = ja & C ++ ovat oletusarvoisesti ylikuormitettuja. Voit esimerkiksi kopioida saman luokan objektit suoraan = -operaattorin avulla.
- Operaattorin etusija ei muuta operaattoreiden assosiatiivisuutta ja etusijaa. Voit kuitenkin muuttaa arvioinnin järjestystä sulkeilla.
- On neljä operaattoria, joita et voi ylikuormittaa C ++: ssa. Ne sisältävät laajuusresoluutiooperaattorin (: :), jäsenvalintaoperaattorin (.), Jäsenvalinnan osoittimen kautta toimiva operaattori (. *) Ja kolmikantaisen operaattorin (? :).
Kuljettajan ylikuormituksen säännöt:
Tässä ovat säännöt käyttäjän ylikuormitukselle:
- Jotta se toimisi, vähintään yhden operandin on oltava käyttäjän määrittämä luokkaobjekti.
- Voit ylikuormittaa vain olemassa olevia operaattoreita. Et voi ylikuormittaa uusia operaattoreita.
- Joitakin operaattoreita ei voi ylikuormittaa kaveritoiminnolla. Tällaiset operaattorit voidaan kuitenkin ylikuormittaa jäsentoiminnolla.
Kuinka ylikuormittaa käyttäjää:
Esimerkki 1:
#includeusing namespace std;class OperatorOverload {private:int x;public:OperatorOverload() : x(10) {}void operator ++() {x = x + 2;}void Print() {cout << "The Count is: " << x;}};int main() {OperatorOverload ov;++ov;ov.Print();return 0;}
Tuotos:
Tässä on kuvakaappaus koodista:
Koodin selitys:
- Iostream-otsikkotiedoston sisällyttäminen koodiin käyttämään sen toimintoja.
- Sisällytä vakio nimitila ohjelmaamme käyttääksesi luokkia sitä kutsumatta.
- Luo luokka nimeltä OperatorOverload.
- Käytä yksityisen pääsyn muokkausta, joka merkitsee luokan jäsenen yksityisesti käytettävissä olevaksi.
- Luo kokonaislukumuuttuja x. Tämä muuttuja on yksityisesti käytettävissä.
- Käytä julkisen pääsyn muokkaajaa, joka merkitsee luokan jäsenen yksityisesti käytettävissä olevaksi.
- Alusta muuttuja x arvoon 10 käyttämällä luokan konstruktoria.
- Ylikuormita ++ -operaattorin merkitystä.
- Operaattori lisää muuttujan x arvoa arvolla 2.
- Käyttäjän ylikuormitusosan loppu. Operaattorille on annettu uusi nimi.
- Tulosta () -toiminnon soittaminen.
- Tulosta muuttujan x arvo konsolin muun tekstin viereen, kun Tulosta () -toimintoa kutsutaan.
- Tulosta () -toiminnon rungon loppu.
- Luokan loppu.
- Kutsu main () -toiminto. Ohjelmalogiikka tulisi lisätä tähän toimintoon.
- Luo OperatorOverload-luokan ilmentymä nimeltä ov.
- Tämä kutsuu void operator ++ () -toiminnon.
- Kutsu Tulosta () -toiminto käyttämällä OperatorOerload-luokan viritystä.
- Funktion on palautettava arvo, kun se on suoritettu onnistuneesti.
- Funktion main () rungon pää.
Esimerkki 2:
#includeusing namespace std;class TestClass {private:int real, over;public:TestClass(int rl = 0, int ov = 0) {real = rl;over = ov;}TestClass operator + (TestClass const &obj) {TestClass result;result.real = real + obj.real;result.over = over + obj.over;return result;}void print() {cout << real << " + i" << over << endl;}};int main(){TestClass c1(9, 5), c2(4, 3);TestClass c3 = c1 + c2;c3.print();}
Tuotos:
Tässä on kuvakaappaus koodista:
Koodin selitys:
- Iostream-otsikkotiedoston sisällyttäminen ohjelmaamme sen toimintojen käyttämiseksi.
- Sisällytä vakio nimitila ohjelmaamme, jotta voit käyttää sen luokkia kutsumatta sitä.
- Luo luokka nimeltä TestClass. {Tarkoittaa luokkaosan alkua.
- Merkitse muuttujat yksityisiksi yksityisen käyttöoikeuden muokkaimella, mikä tarkoittaa, että niihin pääsee vain luokan sisällä.
- Määritä kaksi kokonaislukumuuttujaa, reaali ja yli.
- Käytä julkisen pääsyn modifikaattoria merkitäksesi rakentajan julkiseksi, mikä tarkoittaa, että siihen pääsee myös luokan ulkopuolella.
- Luokkakonstruktorin luominen ja muuttujien alustaminen.
- Alusta muuttujan real arvo.
- Alusta muuttujan arvo.
- Rakentajan rungon pää.
- Ohita + -operaattorin merkitys.
- Luo tyypin TestClass tietotyyppitulos.
- Käytä + -operaattoria kompleksilukuilla. Tämä rivi lisää luvun todellisen osan toisen luvun oikeaan osaan.
- Käytä + -operaattoria kompleksilukuilla. Tämä rivi lisää luvun kuvitteellisen osan toisen luvun kuvitteelliseen osaan.
- Ohjelma palauttaa muuttujan tuloksen arvon onnistuneen suorituksen jälkeen.
- + -Operaattorin uuden merkityksen eli ylikuormituksen määritelmän loppu.
- Kutsu tulostusmenetelmä ().
- Tulosta uusi kompleksinumero numeron lisäämisen jälkeen konsoliin.
- Tulostusteksti () -toiminnon loppu.
- TestClass-luokan rungon pää.
- Päätoiminnon () kutsuminen.
- Lisätään sekä todellisten että monimutkaisten osien arvot. C1: n ensimmäinen osa lisätään c2: n ensimmäiseen osaan, toisin sanoen 9 + 4. C1: n toinen osa lisätään c: n toiseen osaan, ts. 5 + 3.
- Toiminnon suorittaminen ylikuormitetulla + -operaattorilla ja tuloksen tallentaminen muuttujaan c3.
- Tulostetaan muuttujan c3 arvo konsolille.
- Päätoiminnon () rungon loppu.
Yhteenveto:
- Voit määrittää useamman kuin yhden merkityksen C ++ -operaattorille yhdessä laajuudessa.
- Tätä kutsutaan käyttäjän ylikuormitukseksi.
- Operaattorin ylikuormitus antaa operaattorille erityisen merkityksen käyttäjän määrittelemälle tietotyypille.
- Voit määrittää suurimman osan C ++ -operaattoreista operaattorin ylikuormituksen avulla.
- Kaikkia C ++ -operaattoreita ei voi ylikuormittaa.
- Operaattorin ylikuormittamiseksi vähintään yhden operandeista on oltava käyttäjän määrittämä objekti.
- Vain olemassa olevat operaattorit voivat olla ylikuormitettuja. Et voi ylikuormittaa uusia operaattoreita.