首页 > 代码库 > 虚析构函数的作用
虚析构函数的作用
1 #include<iostream> 2 using namespace std; 3 class P 4 { 5 public: 6 P(){} 7 virtual ~P(){cout<<"调用了基类的析构函数!"<<endl;} 8 virtual void show() 9 {10 cout<<"调用了P类的输出函数"<<endl;11 }12 };13 14 class Q:public P15 {16 public:17 Q(){}18 ~Q(){cout<<"调用了派生类的析构函数!"<<endl;}19 void show()20 {21 cout<<"调用了Q类的输出函数"<<endl;22 }23 };24 void callshow(P *obj)25 {26 obj->show();27 }28 void main(void)29 {30 P *s=new Q;31 callshow(s);32 delete s;33 system("pause");34 }
去掉基类show()前面的virtual,运行结果:
加上基类show()前面的virtual,运行结果:
去掉基类析构函数前面的virtual,运行结果:
通过运行结果可以很明显的得出结论:
当没有定义为virtual时,用哪个类的指针(P *s)就调用哪个类的函数,当添加了virtual时,指向哪个类的
对象(new Q),就调用哪个类的函数。概念和用法简单,但是比较重要的技巧。
虚析构函数的作用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。