第十三周阅读程序2:虚析构函数
2015-06-01 19:36
337 查看
问题及代码:
运行结果:
![](http://img.blog.csdn.net/20150601192337888?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRGVzdGlueV9Gb3JldmVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
知识点总结:
虚析构函数的声明 在基类析构函数钱加上 virtual
如果基类的析构函数不定义为虚析构函数,基类的指针在进行析构时,将不执行派生类的析构函数。所以在一个较好的项目中,基类的虚构函数都是定义为虚析构函数的。
当然,老师给的这个程序是建立的派生类的对象,没有涉及指针。所以即使去掉virtual也是可以执行派生类对象的虚构函数的。
#include <iostream> using namespace std; class BASE { private: char c; public: BASE(char n):c(n) {} virtual ~BASE() //虚析构函数 { cout<<c; } }; class DERIVED:public BASE { private: char c; public: DERIVED(char n):BASE(n+1),c(n) {} //派生类数据成员赋值为n 基类数据成员设置为n+1 ~DERIVED() { cout<<c; } }; int main() { DERIVED d('X'); //通过构造函数,派生类数据成员c=X,基类数据成员c=Y return 0; }
运行结果:
知识点总结:
虚析构函数的声明 在基类析构函数钱加上 virtual
如果基类的析构函数不定义为虚析构函数,基类的指针在进行析构时,将不执行派生类的析构函数。所以在一个较好的项目中,基类的虚构函数都是定义为虚析构函数的。
当然,老师给的这个程序是建立的派生类的对象,没有涉及指针。所以即使去掉virtual也是可以执行派生类对象的虚构函数的。
相关文章推荐
- CF224 div2 (C) CF226 div2 (C)
- PythonCharm调试
- 【转】卖场开设社区便利店,不仅卖货,还有家政服务、售后衔接等(图)
- 基于UDP的Winsock编程(C++版)
- Linux网络编程:原始套接字编程及实例分析(二)
- Win7旗舰版不能将大于4G的文件拷贝到U盘怎么办?
- 九度OJ-题目1384:二维数组中的查找
- 响应式布局下的max-width!
- 总结-php
- 我为你负了天下,从此以后,你便是我的天下
- CCS烧写28335失败
- DHCP的配置及应用
- 支付宝网银支付接口
- 熟络的谈笑间,存在着挥之不去的隔膜,嘴上一直笑着,心却一直哭泣,试问苍天,我该如何做
- 3D数学基础 图形与游戏开发的学习 (四)[2D笛卡尔数学]
- 插入排序
- 支付宝网银支付接口
- 【2015/6/1】儿童节献礼——arp攻击的原理与预防
- 滚动ScrollView---数组存放图片,设置3个滚动视图,用来滑动多张图片
- UVA - 1153(贪心算法)