Sobrecarga y anulación en C ++ - Trabajando - Ejemplos y ventajas

Tabla de contenido:

Anonim

Introducción a la sobrecarga y anulación en C ++

Comencemos esto teniendo las definiciones básicas de sobrecarga y sobreescritura en C ++.

Sobrecarga : el nombre de la función es el mismo, pero los parámetros y los retornos cambian de tipo. Como conoceremos la diferencia entre las funciones sobrecargadas durante el tiempo de compilación, también se denomina polimorfismo en tiempo de compilación.

Anulación: esta es una característica del lenguaje de programación orientado a objetos donde la función de la clase secundaria tiene el mismo nombre que la función de clase de los padres. A medida que la funcionalidad principal entra en escena una vez que se declara el objeto y se accede a las funciones utilizando los objetos; es decir, durante la ejecución del código, este concepto de anulación también se denomina polimorfismo en tiempo de ejecución.

Tenemos su sintaxis y sus formas de programación en las secciones posteriores.

Sintaxis de sobrecarga y anulación

Aquí está la sintaxis de la sobrecarga y la anulación dada a continuación.

Sintaxis de sobrecarga:

return_type function_name ( int param_1, string param_2)
(
//function definition
)
return_type_2 function_name ( int param_1, string param_2)
(
//function definition
)
return_type function_name ( int param_1, int param_2)
(
//function definition
)

Los tres juntos pueden formar un ejemplo del concepto de sobrecarga.

Sintaxis de anulación :

Class A
(
Public:
void function_name ( int param_1, int param_2)
(
//function definition
)
);Class B : Class A
(
Public:
void function_name ( int param_1, int param_2)
(
//function definition
)
);

Lo anterior es la sintaxis para la funcionalidad de anulación. El resultado principal se puede inferir una vez que declaramos un objeto y llamamos a esos mismos métodos de Clase A y Clase B. En la funcionalidad de anular el "Objeto" juega un papel importante.

Ahora veamos un ejemplo para conocer mejor su funcionalidad.

Ejemplos de sobrecarga y anulación en C ++

Estos son los ejemplos de sobrecarga y anulación en C ++ con el resultado que se muestra a continuación:

Ejemplo # 1 - Sobrecarga

Comencemos con un programa simple.

Código:

#include
using namespace std;
int calc(int);
float calc(float);
int calc(int, float);
int main()
(
int a = 10;
float b = 11.2;
calc(a);
calc(b);
calc(a, b);
)
int calc(int a)
(
int tot=a*a;
cout << " Area of Square A is: " << tot< )
float calc(float b)
(
float tot = b*b;
cout << " Area of Square B is: " << tot < )
int calc(int a, float b)
(
int tot = a*b;
cout << " Area of Square C is: " << tot << endl;
)
#include
using namespace std;
int calc(int);
float calc(float);
int calc(int, float);
int main()
(
int a = 10;
float b = 11.2;
calc(a);
calc(b);
calc(a, b);
)
int calc(int a)
(
int tot=a*a;
cout << " Area of Square A is: " << tot< )
float calc(float b)
(
float tot = b*b;
cout << " Area of Square B is: " << tot < )
int calc(int a, float b)
(
int tot = a*b;
cout << " Area of Square C is: " << tot << endl;
)
#include
using namespace std;
int calc(int);
float calc(float);
int calc(int, float);
int main()
(
int a = 10;
float b = 11.2;
calc(a);
calc(b);
calc(a, b);
)
int calc(int a)
(
int tot=a*a;
cout << " Area of Square A is: " << tot< )
float calc(float b)
(
float tot = b*b;
cout << " Area of Square B is: " << tot < )
int calc(int a, float b)
(
int tot = a*b;
cout << " Area of Square C is: " << tot << endl;
)

Salida:

Ahora, ¿qué pasa si doy valores de tipo de datos incorrectos para las variables a, b?

Código:

int main()
(
int a = 10.8;
float b = 12;
calc(a);
calc(b);
calc(a, b);
)

Solo he cambiado la parte principal del programa anterior, así que aquí va la salida.

salida:

Nos da la salida ya que va a convertir el valor flotante al tipo de datos int y nos da la salida.

Ahora, como ejercicio, puede intentar cambiar el tipo de retorno de la función y los parámetros y jugar con ellos.

Ejemplo # 2 - Anulación

A continuación podemos tener un ejemplo para una funcionalidad superior en C ++.

Código:

#include
using namespace std;
class First
(
public:
virtual void Calc( int a, float b)
(
int tot= a*b;
cout << "Square of First class is: "<< tot < )
void Other()
(
cout<<"Other function in first class"< )
);
class Second : public First
(
public:
// Overriding method
void Calc(int a, float b)
(
float tot = a+b;
cout << "Addition of second class is: " < )
);
int main()
(
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a, b);
s.Other();
)
#include
using namespace std;
class First
(
public:
virtual void Calc( int a, float b)
(
int tot= a*b;
cout << "Square of First class is: "<< tot < )
void Other()
(
cout<<"Other function in first class"< )
);
class Second : public First
(
public:
// Overriding method
void Calc(int a, float b)
(
float tot = a+b;
cout << "Addition of second class is: " < )
);
int main()
(
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a, b);
s.Other();
)
#include
using namespace std;
class First
(
public:
virtual void Calc( int a, float b)
(
int tot= a*b;
cout << "Square of First class is: "<< tot < )
void Other()
(
cout<<"Other function in first class"< )
);
class Second : public First
(
public:
// Overriding method
void Calc(int a, float b)
(
float tot = a+b;
cout << "Addition of second class is: " < )
);
int main()
(
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a, b);
s.Other();
)
#include
using namespace std;
class First
(
public:
virtual void Calc( int a, float b)
(
int tot= a*b;
cout << "Square of First class is: "<< tot < )
void Other()
(
cout<<"Other function in first class"< )
);
class Second : public First
(
public:
// Overriding method
void Calc(int a, float b)
(
float tot = a+b;
cout << "Addition of second class is: " < )
);
int main()
(
int a= 5;
float b=2.5;
Second s;
First &f1 = s;
f1.Calc(a, b);
s.Other();
)

Salida:

A través del código anterior, podemos encontrar eso cuando la referencia del objeto de primera clase se asigna al objeto creado con respecto a nuestra segunda clase. Y luego, cuando accedimos al método de anulación utilizando el objeto de la clase base, podemos notar claramente que se ha mostrado la salida de la clase derivada. Este concepto se llama anulación. La primera y segunda clase son las clases base y derivada respectivamente. El resultado de lo anterior es un siguiente:

Como ejercicio, ¿puede intentar anular y sobrecargar una función juntos y verificar si es posible o verificar cómo resulta la salida?

¿Como funciona?

Sobrecarga: Aquí, no hay un punto especial del que podamos tener una nota. Necesitamos asegurarnos de que el tipo de retorno o los parámetros dentro de la función varíen. Si miramos arriba la estructura de programación, las funciones se declaran primero y se da su implementación.

Anulación: la sintaxis de la herencia y la implementación de funciones son los puntos clave que se deben notar aquí. En el ejemplo anterior, podemos notar que la declaración de función con la palabra clave pública es bastante diferente.

Y en C ++, la definición de clase termina con un punto y coma (;) y si necesitamos heredar la clase base a la clase secundaria, usamos el símbolo de dos puntos (:). La funcionalidad principal de anulación se observa cuando los objetos se declaran e inicializan para la clase. Después de la invocación de funciones usando los objetos, podemos entender claramente el concepto de anulación.

Ventajas

  • La principal ventaja de estas anulaciones y sobrecargas es el ahorro de tiempo.
  • Ahorra espacio en la memoria.
  • Se aumenta la legibilidad del código.
  • Aquí, para el concepto de sobrecarga de funciones, podemos usar diferentes nombres de funciones para diferentes operaciones, eliminando el uso de diferentes nombres de funciones.
  • La flexibilidad y la facilidad de mantenimiento del código se vuelven más fáciles.
  • En el caso de anulación, la clase secundaria puede tener funciones de clase primaria e incluso puede tener su propia implementación de esa función.
  • Se puede hacer referencia a los objetos y la clase secundaria puede acceder a las funciones de la clase primaria y secundaria.

Conclusión

Ahora hemos entendido claramente los conceptos de sobrecarga y anulación. En la sobrecarga, debemos asegurarnos de que la diferencia en las funciones sobrecargadas exista ya sea en función del tipo de retorno o de los parámetros, aunque la definición de la función dentro de ellos es la misma o diferente.

Y en el caso de anulación, ya que es un concepto de programación orientado a objetos, solo podemos utilizar en forma de clases utilizando la funcionalidad de herencia.

Artículos recomendados

Esta es una guía de sobrecarga y anulación en C ++. Aquí discutimos la introducción, cómo funciona, la sintaxis, los ejemplos y las ventajas de sobrecargar y anular en C ++ con la implementación de código. También puede consultar los siguientes artículos para obtener más información:

  1. Sobrecarga en C ++
  2. Sobrecarga vs anulación
  3. Anulación en PHP
  4. Anulación en C ++
  5. Anulación en Java
  6. Polimorfismo en Java
  7. Las 11 características y ventajas principales de C ++
  8. Anulación en Python | Función y Reglas