Learning C ++: sobrecàrrega dels operadors d’entrada i sortida

Bloc

Learning C ++: sobrecàrrega dels operadors d’entrada i sortida

Una de les primeres coses que feu quan esteu dissenyant i implementant una classe és determinar alguna manera d’introduir les dades als objectes de la classe i alguna manera d’obtenir dades dels vostres objectes. De vegades, les funcions de membre funcionen bé per a això, però d'altres voleu utilitzar els operadors d'entrada i sortida com els que feu servir amb els tipus de dades integrats.



En aquest article us mostraré com sobrecarregar l’operador d’entrada (>>) i l’operador de sortida (<<) perquè els pugueu utilitzar amb els vostres objectes de classe.

Poques paraules sobre la sobrecàrrega de l'operador

C ++ és un dels pocs idiomes que permet la sobrecàrrega de l’operador. La sobrecàrrega d'operadors és útil amb les classes perquè hi ha vegades que es vol utilitzar un objecte de classe amb un operador que no reconeix aquest objecte. Això serà cert per a tots els vostres tipus (classes) definits per l'usuari.



Per exemple, considerem una classe anomenada IntData. Aquesta classe és una classe wrapper per a enters que inclou (hipotèticament) algunes funcionalitats que no es troben al propi tipus int. Si vull afegir dos IntData objectes junts, sense la sobrecàrrega de l'operador, hauré de proporcionar una funció membre per fer-ho. Aquí teniu un exemple de fragment de codi:

IntData d1(1); IntData d2(2); IntData d3 = d1.add(d2);

El que prefereixo fer és això:



IntData d1(1); IntData s2(2); IntData d3 = d1 + d2;

No puc fer-ho sense una sobrecàrrega de l'operador perquè el + L'operador no està definit per treballar amb el meu IntData objectes. Amb la sobrecàrrega de l’operador, en canvi, puc tenir el + l'operador reconeix el meu IntData objectes i realitzeu l’addició resultant. Això fa que la sobrecàrrega de l’operador sigui una part important de moltes definicions de classes.

Això també s'aplica a operacions com l'entrada i la sortida. No puc escriure això simplement per mostrar el contingut d’un IntData objecte:

cout << d1 << endl;

El << l’operador no coneix la definició de la meva classe. Tampoc no puc utilitzar l’operador d’entrada per posar dades en un IntData objecte:

cin >> d2;

Per permetre que aquestes operacions funcionin de manera que els usuaris de la meva classe puguin utilitzar aquests objectes de la mateixa manera que utilitzen tipus de dades primitives, he de sobrecarregar els operadors d'entrada i sortida per reconèixer IntData objectes.

#cpp # aprendre a codificar # orientat a objectes # operador-sobrecàrrega # aprendre-a-programar # c ++

levelup.gitconnected.com

Learning C ++: sobrecàrrega dels operadors d’entrada i sortida

En aquest article us mostraré com sobrecarregar l’operador d’entrada (>>) i l’operador de sortida (<<) so that you can use them with your class objects.