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

相关推荐

无情咸鱼王的秋招日记之薛定谔的Offer:好拒信,偷了,希望有机会用到
点赞 评论 收藏
分享
11-27 12:36
已编辑
门头沟学院 前端工程师
Apries:这个阶段来说,很厉害很厉害了,不过写的简历确实不是很行,优势删掉吧,其他的还行
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务