C++ OperaSobrecarga de Tor con ejemplos

โšก Resumen inteligente

Operasobrecarga de tor en C++ Te permite redefinir cรณmo funcionan los operadores integrados como + y == con tus propias clases y objetos. Aquรญ aprenderรกs su sintaxis, los enfoques, quรฉ operadores se pueden sobrecargar y las reglas a seguir.

  • โž• Quรฉ es: OperaLa sobrecarga de Tor redefine operadores como + para tus propias clases.
  • โœ๏ธ Sintaxis: Define una funciรณn llamada operador seguida del sรญmbolo, como operador+.
  • ๐Ÿ”€ Enfoques: Puedes sobrecargar los operadores como funciones miembro o funciones amigas.
  • ๐Ÿšซ Lรญmites: Algunos operadores, como ::, ., y ?:, no se pueden sobrecargar.
  • ๐Ÿค– Ayuda de IA: Las herramientas de IA como GitHub Copilot escriben funciones de sobrecarga de operadores al instante.

C++ OperaSobrecarga de Tor

ยฟQuรฉ es OperaยฟSobrecarga de Tor?

El uso de sobrecarga del operador in 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 C++ operadores. Tambiรฉn puede utilizar la sobrecarga de operadores para realizar diferentes operaciones utilizando un operador.

Sintaxis

Para sobrecargar un C++ operador, 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:

  • return_type es el tipo de retorno de la funciรณn.
  • A continuaciรณn, menciona la palabra clave del operador.
  • El sรญmbolo indica el sรญmbolo del operador que se va a sobrecargar. Por ejemplo, +, -, <, ++.
  • Los argumentos se pueden pasar a la funciรณn del operador de la misma manera que las funciones.

Ejemplo

#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:

 OperaSobrecarga de Tor

Aquรญ hay una captura de pantalla del cรณdigo:

 OperaSobrecarga de Tor

Code Explicaciรณn:

  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. Crea 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 recuento de variables enteras. Esta variable serรก accesible de forma privada.
  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 clase para inicializar el contador de variables a 5.
  8. Sobrecargue el significado del operador โ€”.
  9. El operador decrementarรก 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. Definiciรณn de una funciรณn denominada funciรณn Display().
  12. Imprima el valor del recuento de variables junto con otro texto en la consola cuando se llame a la funciรณn Display(). El } marca el final del cuerpo de la funciรณn Display().
  13. Fin del cuerpo de la clase.
  14. Llame a la funciรณn principal(). La lรณgica del programa debe agregarse dentro de esta funciรณn.
  15. Crea una instancia de la clase TestClass y asรญgnale el nombre tc.
  16. Esto llamarรก a la funciรณn โ€“() del operador nulo.
  17. Utilice la postura de la clase TestClass para llamar a la funciรณn Display().
  18. La funciรณn debe devolver un valor al completarse exitosamente.
  19. Fin del cuerpo de la funciรณn main().

Diferentes enfoques para OperaTor Sobrecarga en C++

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

  1. Funciรณn miembro
  2. Funciรณn de no miembro
  3. Funciรณn amigo
  • La funciรณn de sobrecarga del operador puede ser una funciรณn miembro cuando un operando izquierdo es un objeto de la clase.
  • Cuando el operando izquierdo es diferente, el OperaLa funciรณn de sobrecarga de Tor debe ser una funciรณn que no sea miembro.

Puede convertir la funciรณn de sobrecarga del operador en una funciรณn amiga si necesita acceder a los miembros de la clase privada y protegida.

ยฟTodos pueden C++ OperaยฟEstรกn sobrecargados los controladores?

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

Dichas certificaciones incluyen:

  • :: -Operador de resoluciรณn de alcance
  • ?:-operador ternario.
  • . -selector de miembros
  • Operador sizeof
  • * selector de puntero de miembro

Cosas para recordar

  1. Con la sobrecarga de operadores, puede redefinir la forma en que funciona un operador solo para los tipos definidos por el usuario (objetos, estructuras). No puede usarlo para tipos integrados (float, char, int, etc.).
  2. El = y & C++ Los operadores estรกn sobrecargados de forma predeterminada. Por ejemplo, puedes copiar los objetos de la misma clase directamente utilizando el operador =.
  3. OperaLa precedencia de Tor no cambia la asociaciรณn ni la precedencia de los operadores. Sin embargo, puedes cambiar el orden de evaluaciรณn usando parรฉntesis.
  4. Hay cuatro operadores que no se pueden sobrecargar en C++. Incluyen el operador de resoluciรณn de alcance (::), el operador de selecciรณn de miembros (.), el operador de selecciรณn de miembros a travรฉs de un puntero a funciรณn (.*) y el operador ternario (?:).

Reglas para OperaSobrecarga de Tor

Aquรญ hay reglas para OperaSobrecarga de Tor:

  • Para que funcione, al menos un operando debe ser un objeto de clase definido por el usuario.
  • Solo se pueden sobrecargar operadores existentes. No se pueden sobrecargar operadores nuevos.
  • Algunos operadores no se pueden sobrecargar mediante una funciรณn amiga. Sin embargo, dichos operadores se pueden sobrecargar mediante una funciรณn miembro.

Cรณmo sobrecargar Operator

Ejemplo

#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:

Sobrecarga Operaejemplo de tor

Aquรญ hay una captura de pantalla del cรณdigo:

Sobrecarga Operaejemplo de tor

Code Explicaciรณn:

  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. Crea una clase llamada OperatorSobrecarga.
  4. Utilice el modificador de acceso privado, que marca a un miembro de la clase como de acceso privado.
  5. Crea una variable entera x. Esta variable serรก accesible de forma privada.
  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 clase para inicializar la variable x a 10.
  8. Sobrecargar el significado del operador ++.
  9. El operador incrementarรก el valor de la variable x con 2.
  10. Fin de la secciรณn de sobrecarga del operador. El operador ha recibido un nuevo nombre.
  11. Llamando a la funciรณn Imprimir().
  12. Imprima el valor de la variable x junto con otro texto en la consola cuando se llame a la funciรณn Print().
  13. Fin del cuerpo de la funciรณn Print().
  14. Fin del cuerpo de la clase.
  15. Llame a la funciรณn principal(). La lรณgica del programa debe agregarse dentro de esta funciรณn.
  16. Cree una instancia del OperatorOverload Clase denominada ov.
  17. Esto llamarรก a la funciรณn del operador void ++().
  18. Utilice la postura de OperaClase torOverload para llamar a la funciรณn Print().
  19. La funciรณn debe devolver un valor al completarse exitosamente.
  20. Fin del cuerpo de la funciรณn main().

Ejemplo

#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:

Sobrecarga Operaejemplo de tor

Aquรญ hay una captura de pantalla del cรณdigo:

Sobrecarga Operaejemplo de tor

Code Explicaciรณn:

  1. Incluir el archivo de encabezado iostream en nuestro programa para poder utilizar sus funciones.
  2. Incluya el espacio de nombres estรกndar en nuestro programa para poder usar sus clases sin llamarlo.
  3. Crea una clase llamada TestClass. El { marca el comienzo del cuerpo de la clase.
  4. Utilice el modificador de acceso privado para marcar variables como privadas, lo que significa que solo se puede acceder a ellas desde dentro de la Clase.
  5. Defina dos variables enteras, reales y superiores.
  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 el las variables.
  8. Inicializa el valor de la variable real.
  9. Inicialice 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. Utilice el operador + con nรบmeros complejos. Esta lรญnea sumarรก la parte real de un nรบmero con la parte real de otro nรบmero.
  14. Utilice 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 resultado tras una ejecuciรณn exitosa.
  16. Fin de la definiciรณn del nuevo significado del operador +, es decir, la sobrecarga.
  17. Llame al mรฉtodo print().
  18. Imprima el nuevo nรบmero complejo despuรฉs de la suma en la consola.
  19. Fin del cuerpo de la funciรณn print().
  20. Fin del cuerpo de la clase TestClass.
  21. Llamando a la funciรณn main().
  22. Pasando los valores de las partes reales y complejas a 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 utilizando 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().

Preguntas Frecuentes

OperaLa sobrecarga de operadores permite redefinir cรณmo funcionan los operadores integrados, como + o ==, con objetos de tus propias clases, de modo que se comporten de forma natural con tipos de datos personalizados.

Define una funciรณn especial cuyo nombre sea la palabra clave operador seguida del sรญmbolo, como por ejemplo operador+. Esta funciรณn recibe los operandos como parรกmetros y devuelve el resultado.

Existen dos enfoques principales: sobrecargar un operador como funciรณn miembro de la clase o como funciรณn amiga que puede acceder a los miembros privados de la clase.

La mayorรญa de los operadores se pueden sobrecargar, pero algunos no, incluidos los operadores de resoluciรณn de รกmbito (::), acceso a miembros (.), puntero a miembros (.*) y ternario (?:).

Solo se pueden sobrecargar los operadores existentes, al menos un operando debe ser de un tipo definido por el usuario y no se puede cambiar la precedencia, la asociatividad ni el nรบmero de operandos de un operador.

Los asistentes de IA como GitHub Copilot generan funciones de sobrecarga de operadores para tus clases, te permiten elegir entre funciones miembro y funciones amigas, y aรฑaden los tipos de retorno correctos a medida que escribes.

Sรญ. Las herramientas con inteligencia artificial generan operadores sobrecargados como + y ==, siguen las reglas estรกndar e identifican los operadores que no se pueden sobrecargar, lo que ahorra tiempo y evita errores.

OperaLa sobrecarga de Tor facilita el uso y la lectura de las clases al permitir que los objetos trabajen con operadores familiares, como sumar dos vectores con + en lugar de una funciรณn con nombre.

Resumir este post con: