De hecho, una buena pregunta … Al menos, debo decir que tienes un buen pensamiento …
Entonces, ¿qué está sobrecargando en C ++?
C ++ le permite especificar más de una definición para un nombre de función o un operador en el mismo ámbito, lo que se denomina sobrecarga de funciones y sobrecarga de operadores, respectivamente.
¿Por qué nos sobrecargamos?
- ¿Cuáles son las mejores estrategias / enfoques para enseñar ESL a adultos jóvenes?
- ¿Qué diferencia a Khan Academy de la escolarización tradicional, tanto secundaria como universitaria?
- ¿Cuál es el futuro de ELT?
- ¿Puedo hacer ingeniería genética después de tomar PCM en la clase 12?
- ¿Se puede obligar a un estudiante de secundaria a registrarse para votar como parte de su calificación?
La sobrecarga es un concepto utilizado para evitar el código redundante en el que se usa el mismo nombre de método varias veces pero con un conjunto diferente de parámetros. El método real que se llama durante el tiempo de ejecución se resuelve en tiempo de compilación, evitando así los errores de tiempo de ejecución. La sobrecarga proporciona claridad de código, elimina la complejidad y mejora el rendimiento del tiempo de ejecución.
¿Qué puede ser sobrecargado y qué no puede ser todo?
Solo se pueden sobrecargar funciones, operadores y declaraciones de plantillas de funciones; las declaraciones de variables y tipos no se pueden sobrecargar.
Entonces, ¿se puede sobrecargar una clase en C ++?
Como todos sabemos, la clase es un tipo definido por el usuario, para ser precisos, la clase es una declaración de tipo. Si existe algo llamado ‘sobrecarga de clase’, entonces es ciertamente similar a ‘herencia de tipo’. Ahora, ‘herencia de tipo’ (sobrecarga de clase) representa una relación “es-a”.
Pero, según la definición de clase, la clase (composición) tiene una relación ‘tiene-a’. Entonces, vemos, uno entra en conflicto con el otro.
De ahora en adelante, la clase es una declaración de tipo, nunca se puede sobrecargar .
¿Qué puedo hacer como alternativa de sobrecarga de clase?
Sencillo…. Haga algo similar a los archivos de encabezado type_traits de C ++ … Simplemente especialice la clase con las plantillas que se muestran a continuación.
plantilla
vacío foo (T)
{
cout << "foo (T)" << endl;
}
plantilla
vacío foo (X *)
{
cout << "foo (X *)" << endl;
}
Entonces, la codificación es divertida … ¿verdad?
¡¡¡Disfruta aprendiendo!!!