Com implementar la sobrecàrrega de l'operador a c ++?

En aquest article veurem un altre concepte orientat a objectes que facilita la manipulació de l’operador. Aprendríem la sobrecàrrega de l’operador en C ++.

En aquest article explorarem un altre concepte orientat a objectes que facilita la manipulació de l'operador. És a dir, estaríem entrant en els detalls de l'operador Sobrecàrrega en C ++ . Les següents indicacions es tractaran en aquest article,



Comencem, doncs, amb aquest article sobre la sobrecàrrega de l’operador en C ++.



Sobrecàrrega en C ++

Si creem dos o més membres de la mateixa classe que tenen el mateix nom però diferents en nombre o tipus de paràmetre, es coneix com a sobrecàrrega C ++.



A C ++, podem sobrecarregar:

  • mètodes
  • constructors
  • propietats indexades

Es deu al fet que aquests membres només tenen paràmetres.

Continuem amb aquest article sobre la sobrecàrrega de l’operador en C ++.



com utilitzar el navegador db per sqlite

Tipus de sobrecàrrega en C ++

  • Funció de sobrecàrrega
  • Sobrecàrrega de l'operador

Sobrecàrrega: sobrecàrrega de l’operador a C ++ - Edureka

Continuem amb aquest article sobre la sobrecàrrega de l’operador en C ++.

Per què s’utilitza la sobrecàrrega de l’operador?

Els programes C ++ es poden escriure sense el coneixement de la sobrecàrrega de l’operador. També els programadors utilitzen profundament els operadors que operen per fer que el programa sigui intuïtiu. Per exemple,

Podem substituir el codi com:

càlcul = sumar (dividir (a, b), multiplicar (a, b))

Per equació

càlcul = (a / b) + (a * b)

La sobrecàrrega de l’operador proporciona una manera senzilla i senzilla per al desenvolupament de noves definicions per a la majoria d’operadors de C ++. Amb un coneixement suficient, gairebé podem crear un llenguatge propi mitjançant l’ús creatiu de la funció i les tècniques de sobrecàrrega de l’operador. Podem sobrecarregar tots els operadors en C ++ excepte el següent:
● Operador d'abast (: :)
● Operador de mida (Sizeof)
● selector de membres (.)
● selector de punter de membre (*)
● operador ternari (? :)

Sintaxi de la sobrecàrrega de l'operador

return_type class_name:: operador op (llista_argument) {// cos de la funció}

On el tipus de retorn és el tipus de valor que retorna la funció. nom_classe és el nom de la classe.

Continuem amb aquest article sobre la sobrecàrrega de l’operador en C ++.

Implementació de la sobrecàrrega de l’operador en C ++

La funció de l'operador ha de ser no estàtica (funció membre) o funció amiga per obtenir una sobrecàrrega. La funció de sobrecàrrega de l’operador es pot aplicar a una funció membre si l’operand esquerre és un objecte d’aquesta classe, però si l’operand esquerre és diferent, la funció de sobrecàrrega de l’operador s’ha de definir com una funció no membre.
La funció de sobrecàrrega de l'operador es pot convertir en una funció d'amic si requereix accés als membres privats i protegits de la classe. Per exemple, l'operador op és una funció d'operador on op és l'operador que està sobrecarregat i l'operador és la paraula clau. La sobrecàrrega de l'operador es pot aconseguir implementant una funció que pot ser una funció membre, una funció no membre o una funció amiga.

Quina diferència hi ha entre les funcions de l'operador i les funcions normals?

Les funcions de l’operador són les mateixes que les funcions normals. L'única diferència és que el nom d'una funció d'operador sempre és la paraula clau d'operador seguida del símbol d'operador i les funcions d'operador es diuen quan s'utilitza l'operador corresponent.

Continuem amb aquest article sobre la sobrecàrrega de l’operador en C ++.

Tipus d’enfocaments de sobrecàrrega

La sobrecàrrega de l’operador es pot fer utilitzant tres enfocaments

  • Operador unari de sobrecàrrega.
  • Operador binari de sobrecàrrega.
  • Operador binari de sobrecàrrega mitjançant una funció amiga.

Continuem amb aquest article sobre la sobrecàrrega de l’operador en C ++.

Operador unari de sobrecàrrega

Considerem l’operari ‘-’ unari. Un operador menys quan s'utilitza com a unari només requereix un operant. Sabem que aquest operador canvia el signe d'un operand quan s'aplica a una variable de dades bàsica. Vegem com sobrecarregar aquest operador perquè es pugui aplicar a un objecte de la mateixa manera que s'aplica a una variable int o float. El menys unari, quan s'aplica a un objecte, hauria de disminuir cadascun dels seus elements de dades.

Exemple:

#include using namespace std class Height {public: // Member Objects int feet, inch // Constructor per inicialitzar el valor de l'objecte Height (int f, int i) {feet = f inch = i} // Operador de sobrecàrrega (-) a realitzar decrement // operació de Height object void operator- () {feet-- inch-- cout<< 'Feet & Inches after decrement: ' << feet << ' ' ' << inch <

Sortida:

Explicació:
A l’exemple anterior, sobrecarreguem l’operador unari ‘-’ per fer decrementar les dues variables de la classe Height. Passem dos paràmetres al constructor i guardem els seus valors en peus i polzades variables. A continuació, definim la funció de sobrecàrrega de l'operador (void operator- ()
) en què les dues variables es decrementen en una posició.
Quan escrivim -h1, crida a la funció de sobrecàrrega de l'operador i disminueix els valors passats al constructor.

Continuem amb aquest article sobre la sobrecàrrega de l’operador en C ++.

Operador binari de sobrecàrrega

És una sobrecàrrega d'un operador que opera en dos operands. Prenguem el mateix exemple d’alçada de classe, però aquesta vegada afegim dos objectes d’alçada h1 i h2.

Exemple:

#include using namespace std class Height {public: int feet, inch Height () {feet = 0 inch = 0} Height (int f, int i) {feet = f inch = i} // Operador de sobrecàrrega (+) per realitzar addició // objecte de dues distàncies mitjançant operador binari Operador d'alçada + (Alçada i d2) // Truca per referència {// Crea un objecte per retornar Alçada h3 // Realitza l'addició de peus i polzades h3.feet = peus + d2.feet h3. inch = inch + d2.inch // Torna l'objecte resultant return h3}} int main () {Altura h1 (3, 7) Altura h2 (6, 1) Altura h3 // Utilitza un operador sobrecarregat h3 = h1 + h2 cout<< 'Sum of Feet & Inches: ' << h3.feet << ''' << h3.inch << endl return 0 } 

Sortida:

Explicació:
Operador d'alçada + (Alçada i h2), aquí torna_tipus de funció és classe Alçada, per tant retorna un objecte h3 de classe Alçada. A la línia h3 = h1 + h2, h1 crida a la funció operadora dels seus objectes de classes i pren h2 com a paràmetre; a continuació, apliquem h3.feet = peus + d2.feet i h3.inch = polzada + d2.inch que emmagatzema el suma de valors de les variables peus i polzades en variables associades a l'objecte h3.
Quan la sentència ‘h3 = h1 + h2’ invoca la funció sobrecarregada de l’operador, l’objecte h1 va assumir la responsabilitat d’invocar la funció i h2 juga el paper d’argument que es passa a la funció. La declaració d’invocació anterior equival a h3 = h1.operator + (h2), per tant, s’accedeix directament al membre de dades de h2 i s’accedeix al membre de dades de h2 (que es passa com a argument) mitjançant l’operador de punts.

Regles per a la sobrecàrrega de l'operador

  • Només es poden sobrecarregar els operadors existents i no es poden sobrecarregar els operadors nous
  • L'operador sobrecarregat ha de contenir almenys un operant del tipus de dades definit per l'usuari.
  • No fem servir una funció amic per sobrecarregar determinats operadors. Tot i això, les funcions membres es poden utilitzar per sobrecarregar aquests operadors.
  • Quan els operadors unaris es sobrecarreguen mitjançant una funció membre, no prenen arguments explícits, però, si una funció amiga els sobrecarrega, adopten un argument.
  • Quan els operadors binaris es sobrecarreguen mitjançant una funció membre, adopten un argument explícit i, si es sobrecarreguen mitjançant una funció amiga, adopten dos arguments explícits.

Per tant, hem arribat al final d’aquest article sobre ‘Sobrecàrrega de l’operador en C ++’. Si voleu obtenir més informació, consulteu el programa Java Training by Edureka, una empresa d’aprenentatge en línia de confiança. Edureka’s estan dissenyats per formar-vos tant per a conceptes bàsics com avançats de Java juntament amb diversos marcs Java com Hibernate & Spring.

Tens alguna pregunta? Si us plau, mencioneu-ho a la secció de comentaris d’aquest bloc i us respondrem el més aviat possible.