¿Dónde podemos obtener una clase de quadcopter?

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?

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!!!

No, no puedes sobrecargar class pero puedes especializarlo con templates El estándar dice:

Solo las declaraciones de funciones y plantillas de funciones pueden ser
sobrecargado; las declaraciones de variables y tipos no se pueden sobrecargar.

class son declaraciones de tipo, mientras que int i; Es una declaración variable.

p.ej. para class especializada:

template
class foo
{
public:
static void bar()
{
cout << "foo::bar()";
}
};

plantilla <>
clase foo
{
público:
barra vacía estática ()
{
cout << "foo
:: bar ()”;
}
};

plantilla
clase foo
{
público:
barra vacía estática ()
{
cout << "foo
:: bar ()”;
}
};
Corre: Ideone.com

Para la sobrecarga de la función de plantilla: ¿podemos sobrecargar una función de plantilla?

C ++ type_traits archivo de encabezado type_traits usa esto ampliamente.