下列代码执行后的输出顺序是( )。
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; }
B D ~B ~D
D B ~D ~B
B D ~D ~B
B D ~B