nvocar una función virtual y una función virtual pura desde un constructor

Cuando invoco una función virtual desde un constructor base, el compilador no da ningún error. Pero cuando invoco una función puramente virtual del constructor de la clase base, da un error de compilación.

Considere el siguiente programa de muestra:

#include <iostream>

using namespace std;
class base
{
   public:
      void virtual virtualfunc() = 0;
      //void virtual virtualfunc();
      base()
      {
         virtualfunc();
      }
};

void base::virtualfunc()
{
   cout << " pvf in base class\n";
}

class derived : public base
{
   public:
   void virtualfunc()
   {
      cout << "vf in derived class\n";
   }
};

int main()
{
   derived d;
   base *bptr = &d;
   bptr->virtualfunc();

   return 0;
}

Aquí se ve que la función virtual pura tiene una definición. Esperaba que la función virtual pura definida en la clase base se invocara cuandobptr->virtualfunc() es ejecutado. En su lugar, da el error de compilación:

error: resumen virtual `virtual void base :: virtualfunc () 'llamado desde el constructor

¿Cuál es la razón para esto

Respuestas a la pregunta(8)

Su respuesta a la pregunta