#include <iostream>
using namespace std;
int *p1;
struct base
{
base():a(10){}
int a;
~base()
{
cout << "~base()\n";
}
};
struct derive:public base
{
derive():b(5){
p1=&b;
cout << p1 << "\n";
}
int b;
~derive()
{
cout << "~derive()\n";
}
};
int main()
{
base *p = new derive;
delete(p);
cout << *p1;
return 0;
}
我认为派生的 b 不应该被删除,但是 p1 指向的被删除了。当我删除未发生动态继承时指向派生类的基类指针时,它是如何工作的?对不起我的英语不好。