构造,析构, 在构造析构中调用虚函数, 显式析构
发布日期:2021-06-30 22:08:38
浏览次数:2
分类:技术文章
本文共 1812 字,大约阅读时间需要 6 分钟。
/// @file main.cpp/// @brief 构造,析构, 在构造析构中调用虚函数, 显式析构#includeusing namespace std;class CPerson { const char* m_pName;public: CPerson(const char* pName) { /// 在构造中调用虚函数, 执行的本类的虚函数,而不是子类的虚函数 m_pName = pName; Say("CPerson::CPerson()"); } ~CPerson() { if (m_pName != NULL) { m_pName = NULL; } Say("CPerson::~CPerson()"); } virtual void Say(const char* szTxt) { cout << "CPerson " << szTxt << endl; } const char* GetName() const {return m_pName;}};class CStudent : public CPerson {public: CStudent(const char* pName = "no name"):CPerson(pName) { /// 构造函数中,虚表是自己的 /// 在构造中调用虚函数, 执行的本类的虚函数,而不是子类的虚函数 Say("CStudent::CStudent()"); this->CPerson::~CPerson(); ///< 显示调用基类析构后,虚表覆盖为基类的虚表 /// 显式调用基类析构,不会进去自己的析构 } ~CStudent() { /** 析构顺序 : 本类, 成员类变量,基类 */ /// 进入析构函数后,虚表覆盖成本类的虚表 Say("CStudent::~CStudent()"); } virtual void Say(const char* szTxt) { cout << "CStudent " << szTxt << endl; }};void main() { CPerson* pStu = new CStudent[2](); /** 类的构造顺序 基类,成员类成员函数,本类 */ /** CPerson CPerson::CPerson() CStudent CStudent::CStudent() CPerson CPerson::~CPerson() CPerson CPerson::CPerson() CStudent CStudent::CStudent() CPerson CPerson::~CPerson() */ pStu->Say("Hello"); /** CPerson Hello */ delete[] pStu; /** CPerson CPerson::~CPerson() CPerson CPerson::~CPerson() */ /** run result CPerson CPerson::CPerson() CStudent CStudent::CStudent() CPerson CPerson::~CPerson() CPerson CPerson::CPerson() CStudent CStudent::CStudent() CPerson CPerson::~CPerson() CPerson Hello CPerson CPerson::~CPerson() CPerson CPerson::~CPerson() */}
转载地址:https://lostspeed.blog.csdn.net/article/details/50574341 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年04月13日 05时51分41秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
mac || Linux 命令行下实现批量重命名
2019-04-30
java常用类 String面试题
2019-04-30
Windows10下的powershell美化教程
2019-04-30
利用ffmpeg合并音频和视频
2019-04-30
刷好老毛子系统进不了老毛子系统后台的解决办法
2019-04-30
Parallels Desktop 16 不能联网的解决办法
2019-04-30
SLAM中TUM数据集更改图片名字
2019-04-30
手把手教你--jquery chosen插件的使用和API(html下拉框美化)
2019-04-30
手把手教你--JAVA微信支付(H5支付)
2019-04-30
solr修改schema文件(solr修改配置文件)
2019-04-30
Bootstrap datetimepicker日期时间插件使用方法(日期时间选择器)
2019-04-30
字体图标库(Font Awesome)的使用--绝佳的图标字体库和CSS框架
2019-04-30
select下拉框分组展示插件的使用--(select-mania插件的使用)
2019-04-30
Java 8新特性之--lambda表达式的使用和应用
2019-04-30
Java Lambda表达式的应用--Stream API操作集合框架
2019-04-30
省市区三级联动插件Distpicker--前端实现地区三级联动
2019-04-30
solr的使用详解
2019-04-30