考虑接下来的两个课程:
struct Base
{
virtual ~Base()
{
}
virtual void foo() = 0;
};
struct Derived : public Base
{
virtual void foo()
{
}
};
以下是否导致未定义的行为:
Base *obj = new Derived;
delete obj;
?
附加问题:为什么一个方法被声明为虚拟的,它在派生类中是虚拟的(即使在派生类中没有使用 virtual 关键字),但对于析构函数却不是这样?