Una vez entendido el funcionamiento de la Parte 1 del programa, se procede a introducir la sobrecarga de operadores. Esto significa que en vez de declarar la función multiplica como friend Fraccion multiplica(const Fraccion &f1, const Fraccion &f2); se declarará como se muestra en la linea 34 del código que se muestra a continuación. Se puede apreciar como el nombre de la función se sustituye por operator*, esto es la sobrecarga de operadores. Esto provocará que el código incluido en el main sea mucho mas sencillo y legible. Ahora en vez de llamar a la función como hacíamos anteriormente, podremos escribir fMulti=f1*f2; como se muestra en la linea 63.
1 #include <iostream>
2 using namespace std;
3
4 class Fraccion
5 {
6 int n,d;
7
8 public:
9 Fraccion(int num=0, int den=1)
10 {
11 n=num;
12 d=den;
13 }
14 //Set para introducir los datos de las fracciones
15 void SetN(int num)
16 {
17 n=num;
18 }
19 void SetD(int den)
20 {
21 d=den;
22 }
23 //Para diferenciar el num y den de cualquier fracion y sacarlo por pantalla
24 int GetN()
25 {
26 return n;
27 }
28
29 int GetD()
30 {
31 return d;
32 }
33 //Friend para que la funcion pueda acceder a la clase
34 friend Fraccion operator*(const Fraccion &f1, const Fraccion &f2);
35 };
36
37 Fraccion operator*(const Fraccion &f1, const Fraccion &f2)
38 {
39 Fraccion result;
40 result.n=f1.n*f2.n;
41 result.d=f1.d*f2.d;
42 return result;
43
44 ///Otra opcion
45 /*Fraccion result(f1.n*f2.n , f1.d*f2.d);
46 return result;*/
47 }
48 int main()
49 {
50 Fraccion f1, f2, fMulti;
51 int n1,n2,d1,d2;
52
53 cout << "Intro primer numerador: "; cin >>n1;
54 cout << "Intro primer denominador: "; cin >>d1;
55 cout << endl << "Intro segundo numerador: "; cin >>n2;
56 cout << "Intro segundo denominador: "; cin >>d2;
57
58 f1.SetN(n1);
59 f1.SetD(d1);
60 f2.SetN(n2);
61 f2.SetD(d2);
62
63 fMulti=f1*f2;
64
65 cout<<endl<<"La multiplicacion es: "<<fMulti.GetN()<<" / "<<fMulti.GetD()<<endl;
66 }
No hay comentarios:
Publicar un comentario