让我们考虑以下代码:
#include <iostream>
struct A{ virtual void foo(){ } };
struct B : A { virtual void foo(){ } };
A *a = new B;
int main()
{
delete a; //UB?
}
我故意没有定义虚拟析构函数。编译器打印了一条关于导致 UB 的消息,是真的吗?
让我们考虑以下代码:
#include <iostream>
struct A{ virtual void foo(){ } };
struct B : A { virtual void foo(){ } };
A *a = new B;
int main()
{
delete a; //UB?
}
我故意没有定义虚拟析构函数。编译器打印了一条关于导致 UB 的消息,是真的吗?