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 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:
Aquรญ hay una captura de pantalla del cรณdigo:
Code Explicaciรณn:
- Incluyendo el archivo de encabezado iostream en nuestro cรณdigo para usar sus funciones.
- Incluya el espacio de nombres estรกndar en nuestro programa para usar sus clases sin llamarlo.
- Crea una clase llamada TestClass.
- Utilice el modificador de acceso privado, que marca a un miembro de la clase como de acceso privado.
- Cree un recuento de variables enteras. Esta variable serรก accesible de forma privada.
- Utilice el modificador de acceso pรบblico, que marca a un miembro de la clase como de acceso privado.
- Utilice un constructor de clase para inicializar el contador de variables a 5.
- Sobrecargue el significado del operador โ.
- El operador decrementarรก el valor de la variable x en 1.
- Fin de la secciรณn de sobrecarga del operador. El operador ha recibido un nuevo nombre.
- Definiciรณn de una funciรณn denominada funciรณn Display().
- 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().
- Fin del cuerpo de la clase.
- Llame a la funciรณn principal(). La lรณgica del programa debe agregarse dentro de esta funciรณn.
- Crea una instancia de la clase TestClass y asรญgnale el nombre tc.
- Esto llamarรก a la funciรณn โ() del operador nulo.
- Utilice la postura de la clase TestClass para llamar a la funciรณn Display().
- La funciรณn debe devolver un valor al completarse exitosamente.
- 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:
- Funciรณn miembro
- Funciรณn de no miembro
- 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
- 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.).
- 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 =.
- 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.
- 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:
Aquรญ hay una captura de pantalla del cรณdigo:
Code Explicaciรณn:
- Incluyendo el archivo de encabezado iostream en nuestro cรณdigo para usar sus funciones.
- Incluya el espacio de nombres estรกndar en nuestro programa para usar sus clases sin llamarlo.
- Crea una clase llamada OperatorSobrecarga.
- Utilice el modificador de acceso privado, que marca a un miembro de la clase como de acceso privado.
- Crea una variable entera x. Esta variable serรก accesible de forma privada.
- Utilice el modificador de acceso pรบblico, que marca a un miembro de la clase como de acceso privado.
- Utilice un constructor de clase para inicializar la variable x a 10.
- Sobrecargar el significado del operador ++.
- El operador incrementarรก el valor de la variable x con 2.
- Fin de la secciรณn de sobrecarga del operador. El operador ha recibido un nuevo nombre.
- Llamando a la funciรณn Imprimir().
- Imprima el valor de la variable x junto con otro texto en la consola cuando se llame a la funciรณn Print().
- Fin del cuerpo de la funciรณn Print().
- Fin del cuerpo de la clase.
- Llame a la funciรณn principal(). La lรณgica del programa debe agregarse dentro de esta funciรณn.
- Cree una instancia del OperatorOverload Clase denominada ov.
- Esto llamarรก a la funciรณn del operador void ++().
- Utilice la postura de OperaClase torOverload para llamar a la funciรณn Print().
- La funciรณn debe devolver un valor al completarse exitosamente.
- 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:
Aquรญ hay una captura de pantalla del cรณdigo:
Code Explicaciรณn:
- Incluir el archivo de encabezado iostream en nuestro programa para poder utilizar sus funciones.
- Incluya el espacio de nombres estรกndar en nuestro programa para poder usar sus clases sin llamarlo.
- Crea una clase llamada TestClass. El { marca el comienzo del cuerpo de la clase.
- 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.
- Defina dos variables enteras, reales y superiores.
- 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.
- Creando el constructor de clases e inicializando el las variables.
- Inicializa el valor de la variable real.
- Inicialice el valor de la variable over.
- Fin del cuerpo del constructor.
- Anular el significado del operador +.
- Cree el resultado del tipo de datos de tipo TestClass.
- 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.
- 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.
- El programa devolverรก el valor de la variable resultado tras una ejecuciรณn exitosa.
- Fin de la definiciรณn del nuevo significado del operador +, es decir, la sobrecarga.
- Llame al mรฉtodo print().
- Imprima el nuevo nรบmero complejo despuรฉs de la suma en la consola.
- Fin del cuerpo de la funciรณn print().
- Fin del cuerpo de la clase TestClass.
- Llamando a la funciรณn main().
- 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.
- Realizar una operaciรณn utilizando el operador + sobrecargado y almacenar el resultado en la variable c3.
- Imprimiendo el valor de la variable c3 en la consola.
- Fin del cuerpo de la funciรณn main().



