我有以下代码,据我所知,在使用类构造函数的程序结束时,如果创建了某些对象,它们就会被销毁。据此判断,在执行结束时我应该有一些“~ B()" 和 "~D()" 以特定顺序打印出来,但是当我运行代码时没有发生这种情况。为什么会这样?
#include<iostream>
#include<stdlib.h>
using namespace std;
class B{
public:
B(){cout<<"B()";}
virtual void print(){cout<<"b";}
~B(){cout<<"~B()";}
};
class D:public B{
public:
D(){cout<<"D()";}
void print(){B::print()
;cout<<"d";}
~D(){cout<<"~D()";}
};
void testI(){
B* b[]={new B(),new D()};
b[1]->print();
B&c=*b[1];
c.print();
}
int main(){
testI();
return 0;
}