c++虚析构函数的使用问题

#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;
}
我想问为什么那句话破坏了虚函数的特性。。。
 
 

 
全部评论
并没有破坏虚函数的特征。首先你要理解c.~C做了什么工作,它是调用了c的析构函数将对象c释放了。指针a现在指向的对象已经不存在了
点赞 回复 分享
发布于 2015-10-24 11:37

相关推荐

11-18 09:44
Java
小白也想要offer:简历别放洋屁,搞不还还放错了,当然你投外企除外,以上纯属个人观点
点赞 评论 收藏
分享
10-17 16:07
门头沟学院 Java
牛牛大你18号:在汇报,突然弹出来,,领导以为我在准备跳槽,刚从领导办公室谈心出来
点赞 评论 收藏
分享
预计下个星期就能开奖吧,哪位老哥来给个准信
华孝子爱信等:对接人上周说的是这周
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务