#include <iostream>
using namespace std;
class A{
public:
int i;
virtual ~A(){
cout<<"A的析构函数"<<endl;
}
};
class D{
public:
int j;
~D(){
cout<<"D的析构函数"<<endl;
}
};
class B:public A,public D{
public:
int j;
~B(){
cout<<"B的析构函数"<<endl;
}
};
class C:public B{
public:
C(int j){m=j;}
int m;
~C(){
cout<<"C的析构函数"<<endl;
}
};
int main(){
C c(7);
A* a;
a=&c;
c.~C();//这句如果注释掉,下面的a->~A()就会呈现CBDA的效果,不注释下一句就只会A,我使用VC6.0的
cout<<"--------"<<endl;
a->~A();
cout<<"--------"<<endl;
c.~C();
cout<<c.m<<endl;
cout<<"55555"<<endl;
cout<<"--------"<<endl;
return 0;
}
我想问为什么那句话破坏了虚函数的特性。。。