Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Sobrecarga de operadores de C++ con ejemplos

¿Qué es la sobrecarga de operadores?

Usar sobrecarga de operadores en C++, puede especificar más de un significado para un operador en un ámbito. El propósito de la sobrecarga de operadores es proporcionar un significado especial de un operador para un tipo de datos definido por el usuario.

Con la ayuda de la sobrecarga de operadores, puede redefinir la mayoría de los operadores de C++. También puede usar la sobrecarga de operadores para realizar diferentes operaciones con un solo operador.

En este tutorial de C++, aprenderá:

Sintaxis

Para sobrecargar un operador de C++, debe definir una función especial dentro de la Clase de la siguiente manera:

class class_name
{
    ... .. ...
    public
       return_type operator symbol (argument(s))
       {
           ... .. ...
       } 
    ... .. ...
};

Aquí hay una explicación de la sintaxis anterior:

Ejemplo 1:

#include <iostream>
using namespace std;
class TestClass {
private:
	int count;
public:
	TestClass() : count(5) {}
	void operator --() {
		count = count - 3;
	}
	void Display() { 

		cout << "Count: " << count; }
};

int main() {
	TestClass tc;
	--tc;
	tc.Display();
	return 0;
}

Salida:

Aquí hay una captura de pantalla del código:

Explicación del código:

  1. Incluyendo el archivo de encabezado iostream en nuestro código para usar sus funciones.
  2. Incluya el espacio de nombres estándar en nuestro programa para usar sus clases sin llamarlo.
  3. Cree una clase llamada TestClass.
  4. Utilice el modificador de acceso privado, que marca a un miembro de la clase como de acceso privado.
  5. Cree un conteo de variables enteras. Esta variable será de acceso privado.
  6. Utilice el modificador de acceso público, que marca a un miembro de la clase como de acceso privado.
  7. Utilice un constructor de clases para inicializar el contador de variables a 5.
  8. Sobrecargue el significado del operador —.
  9. El operador disminuirá el valor de la variable x en 1.
  10. Fin de la sección de sobrecarga del operador. El operador ha recibido un nuevo nombre.
  11. Definiendo una función llamada función Display().
  12. Imprime el valor de la variable count junto con otro texto en la consola cuando se llama a la función Display(). El } marca el final del cuerpo de la función Display().
  13. Fin del cuerpo de la clase.
  14. Llama a la función main(). La lógica del programa debe agregarse dentro de esta función.
  15. Cree una instancia de la clase TestClass y asígnele el nombre tc.
  16. Esto llamará a la función de operador nulo –().
  17. Utilice la postura de TestClass Class para llamar a la función Display().
  18. La función debe devolver valor al completarse con éxito.
  19. Fin del cuerpo de la función main().

Diferentes enfoques para la sobrecarga de operadores en C++

Puede realizar una sobrecarga de operadores implementando cualquiera de los siguientes tipos de funciones:

  1. Función de miembro
  2. Función para no miembros
  3. Función de amigo

Puede hacer que la función de sobrecarga del operador sea una función amiga si necesita acceder a los miembros de la clase privados y protegidos.

¿Se pueden sobrecargar todos los operadores de C++?

No. Hay operadores de C++ que no se pueden sobrecargar.

Incluyen:

Cosas para recordar:

  1. Con la sobrecarga de operadores, puede redefinir la forma en que un operador funciona solo para los tipos definidos por el usuario (objetos, estructuras). No puede usarlo para tipos integrados (float, char, int, etc.).
  2. Los operadores =y &de C++ están sobrecargados de forma predeterminada. Por ejemplo, puede copiar los objetos de la misma Clase directamente usando el operador =.
  3. La precedencia del operador no cambia la asociatividad y la precedencia de los operadores. Sin embargo, puede cambiar el orden de evaluación usando paréntesis.
  4. Hay cuatro operadores que no puede sobrecargar en C++. Incluyen el operador de resolución de ámbito (::), el operador de selección de miembros (.), la selección de miembros mediante un operador de puntero a función (.*) y el operador ternario (?:).

Reglas para la sobrecarga de operadores:

Estas son las reglas para la sobrecarga de operadores:

Cómo sobrecargar el operador:

Ejemplo 1:

#include <iostream>   
using namespace std;
class OperatorOverload {
private:
	int x;

public:
	OperatorOverload() : x(10) {}
	void operator ++() {
		x = x + 2;
	}
	void Print() {
		cout << "The Count is: " << x;
		}
};
int main() {
	OperatorOverload ov;
	++ov;   
	ov.Print();
	return 0;
}

Salida:

Aquí hay una captura de pantalla del código:

Explicación del código:

  1. Incluyendo el archivo de encabezado iostream en nuestro código para usar sus funciones.
  2. Incluya el espacio de nombres estándar en nuestro programa para usar sus clases sin llamarlo.
  3. Cree una clase llamada OperatorOverload.
  4. Utilice el modificador de acceso privado, que marca a un miembro de la clase como de acceso privado.
  5. Cree una variable entera x. Esta variable será de acceso privado.
  6. Utilice el modificador de acceso público, que marca a un miembro de la clase como de acceso privado.
  7. Utilice un constructor de clases para inicializar la variable x a 10.
  8. Sobrecargue el significado del operador ++.
  9. El operador incrementará el valor de la variable x en 2.
  10. Fin de la sección de sobrecarga del operador. El operador ha recibido un nuevo nombre.
  11. Llamar a la función Imprimir().
  12. Imprime el valor de la variable x junto con otro texto en la consola cuando se llama a la función Print().
  13. Fin del cuerpo de la función Imprimir().
  14. Fin del cuerpo de la clase.
  15. Llama a la función main(). La lógica del programa debe agregarse dentro de esta función.
  16. Cree una instancia de la clase OperatorOverload llamada ov.
  17. Esto llamará a la función del operador void ++().
  18. Utilice la posición de la clase OperatorOverload para llamar a la función Print().
  19. La función debe devolver valor al completarse con éxito.
  20. Fin del cuerpo de la función main().

Ejemplo 2:

#include<iostream> 
using namespace std;

class TestClass {
private:
	int real, over;
public:
	TestClass(int rl = 0, int ov = 0) {
		real = rl;
		over = ov;
	}

	TestClass operator + (TestClass const &obj) {
		TestClass result;
		result.real = real + obj.real;
		result.over = over + obj.over;
		return result;
	}
	void print() {
		cout << real << " + i" << over << endl;
	}
};
int main()
{
	TestClass c1(9, 5), c2(4, 3);
	TestClass c3 = c1 + c2;
	c3.print();
}

Salida:

Aquí hay una captura de pantalla del código:

Explicación del código:

  1. Incluyendo el archivo de encabezado iostream en nuestro programa para usar sus funciones.
  2. Incluya el espacio de nombres std en nuestro programa para usar sus clases sin llamarlo.
  3. Cree una clase llamada TestClass. El { marca el comienzo del cuerpo de la clase.
  4. Utilice el modificador de acceso privado para marcar las variables como privadas, lo que significa que solo se puede acceder a ellas desde dentro de la clase.
  5. Defina dos variables enteras, real y superior.
  6. Utilice el modificador de acceso público para marcar el constructor como público, lo que significa que será accesible incluso fuera de la clase.
  7. Creando el constructor de clases e inicializando las variables.
  8. Inicialice el valor de la variable real.
  9. Inicializa el valor de la variable over.
  10. Fin del cuerpo del constructor.
  11. Anular el significado del operador +.
  12. Cree el resultado del tipo de datos de tipo TestClass.
  13. Use el operador + con números complejos. Esta línea sumará la parte real de un número a la parte real de otro número.
  14. Use el operador + con números complejos. Esta línea sumará la parte imaginaria de un número a la parte imaginaria de otro número.
  15. El programa devolverá el valor de la variable result tras una ejecución exitosa.
  16. Fin de la definición del nuevo significado del operador +, es decir, sobrecarga.
  17. Llama al método print().
  18. Imprima el nuevo número complejo después de agregarlo en la consola.
  19. Fin del cuerpo de la función print().
  20. Fin del cuerpo de la clase TestClass.
  21. Llamar a la función main().
  22. Pasar los valores de las partes reales y complejas para sumar. La primera parte de c1 se sumará a la primera parte de c2, es decir, 9+4. La segunda parte de c1 se sumará a la segunda parte de c, es decir, 5+3.
  23. Realizar una operación usando el operador + sobrecargado y almacenar el resultado en la variable c3.
  24. Imprimiendo el valor de la variable c3 en la consola.
  25. Fin del cuerpo de la función main().

Resumen:


Lenguaje C

  1. Pasar matriz a una función en programación C++
  2. Sobrecarga del operador de Python
  3. Operadores en C++ con Ejemplo:Qué es, Tipos y Programas
  4. C++ do...while bucle con ejemplos
  5. Punteros de C++ con ejemplos
  6. Tipo de datos Char de C++ con ejemplos
  7. Estructura C++ con ejemplo
  8. std::list en C++ con ejemplo
  9. Funciones de C++ con ejemplos de programas
  10. Funciones Python Lambda con EJEMPLOS
  11. Función Python round() con EJEMPLOS