下列代码执行后的输出顺序是( )。
class Base { public: Base() { cout << "B "; } virtual ~Base() { cout << "~B "; }}; class Derived : public Base { public: Derived() { cout << "D "; } ~Derived() { cout << "~D "; }}; int main() { Base *p = new Derived(); delete p; return 0;}