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.