Какой будет результат выполнения программы?

#include <stdio.h> 
#include <iostream> 
 
class A 
{ 
public: 
    A() { p(); } 
    void p() { func(); } 
    virtual void func() = 0; 
}; 
 
class B : public A 
{ 
public: 
    virtual void func() { std::cout << "B::func"; } 
}; 
 
int main() 
{ 
    B b; 
    b.func(); 
    return 0; 
}
B::func
Ошибка выполнения
Ошибка компиляции
Неопределённое поведение