es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo crear una clase derivada completamente funcional con solo un método adicional en C++?

Esto es lo que quiero hacer:

class Derived : public Base
{
public:
int someNewMethod(int someIntParam)
{
// Hace algo que no está en la clase base
return 0; // éxito
}
};

Entonces debería poder usar Derived en lugar de Base (siendo plenamente consciente de que la referencia puede volverse inválida, dependiendo de cuándo se elimine el objeto Base):

Derived &d = *pointerToSomeExistingBaseObject;
d.someNewMethod(12);

Mientras tanto, en algún otro lugar del código, lejos, muy lejos (y de antemano):

Base *pointerToSomeExistingBaseObject = new Base(…);

¡Gracias!

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, puedes usar la clase derivada en lugar de la clase base. Puedes crear un objeto de la clase derivada y asignarlo a un puntero al objeto de la clase base, como se muestra a continuación:

    class Derived : public Base
    {
    public:
        int someNewMethod(int someIntParam)
        {
           // Hace algo que no está en la clase base
           return 0; // éxito
        }
    };
    
    Derived &d = *pointerToSomeExistingBaseObject;
    d.someNewMethod(12);
    

    Debes tener en cuenta que la referencia puede volverse inválida, dependiendo de cuándo se elimine el objeto Base.

    En alguna otra parte del código, debes crear un objeto de la clase base y asignarlo a un puntero:

    Base *pointerToSomeExistingBaseObject = new Base(...);
    

Comments are closed.