C++ OperaSobrecarga de Tor con ejemplos
¿Qué es Opera¿Sobrecarga de Tor?
Usando 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:
Explicación del código:
- 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.
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:
Explicación del código:
- 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:
Explicación del código:
- 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().
Resumen
- Puede especificar más de un significado para un C++ operador en un alcance.
- Esto se llama sobrecarga del operador.
- OperaLa sobrecarga de tor proporciona un significado especial de un operador para un tipo de datos definido por el usuario.
- Puedes redefinir la mayoría de C++ operadores a través de sobrecarga de operadores.
- No todas las C++ Los operadores pueden estar sobrecargados.
- Para que un operador se sobrecargue, al menos uno de los operandos debe ser un objeto definido por el usuario.
- Solo se pueden sobrecargar los operadores existentes. No se pueden sobrecargar operadores nuevos.