serializo la mayoría de mis clases con dos funciones, leer() y escribir(). Lo que me gustaría hacer es tener la función de lectura/escritura() de la clase base llamada desde las subclases para que no tenga que repetir el código de serialización varias veces.Cómo llamar a la función original después de haber sido anulada en C++?
Por ejemplo:
class Base
{
public:
base();
virtual read(QDataStream&);
virtual write(QDataStream&);
private:
int a, b, c, d;
}
class Sub : public Base
{
public:
Sub();
read(QDataStream&);
write(QDataStream&);
private:
int e, f, g, h;
}
lo tanto, en este ejemplo, me gustaría que el código para leer/escribir a, b, c, d que venir de Base. Sub llamaría Base :: read (QDataStream &) y luego agregaría los atributos que sean exclusivos de Sub. De esta forma no tengo que repetir el código de serialización para cada subclase (y posiblemente me olvide de hacerlo).
Tenga en cuenta que esto se llama en realidad "anulando" un método. La "sobrecarga" es cuando tiene varios métodos que tienen el mismo nombre pero que toman diferentes tipos de argumentos. Por ejemplo, una clase de cadena puede sobrecargar operador +() para dar el operador + significado cuando las cadenas están involucradas. – Caleb
Debería intentar corregir los ejemplos. A las funciones miembro les faltan los tipos de devolución, el tipo se llama 'Base', pero parece que hay un constructor' base' ... –
gracias por la clarificación de Caleb. – jecjackal