VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 70|回复: 1

类继承时,析构函数的一些问题

[复制链接]
66_avatar_middle
最佳答案
0 
在线会员 发表于 2020-4-26 16:02:10 | 显示全部楼层 |阅读模式
各位大神,想请问一下,

父类的析构函数如下:
CStudent::~CStudent()
{
        if (pname)
        {
                delete[] pname;
                pname = NULL;
                cout << "空间已释放" << endl;
        }
}

子类的析构函数如下:
CStudentDA::~CStudentDA()
{
        cout << "sda" << endl;
}

我创建一个子类,并运行程序,并不会打印出“空间已释放”这句话,只有sda这句话,是不是意味着我之前new的空间,并没有删除,子类的析构函数覆盖了父类的析构函数,因为一个类的,析构函数只能有一个,还是说因为我建立的是子类,而不是父类,没有用到父类的类名,就不会调用父类的析构函数?

这样的情况怎么解决,谢谢!!




上一篇:WinINet的获取和设置验证码的cookie
下一篇:寻贴,一个SYC发的贴,贴内有一些要求用VC++解决的小问题
66_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-4-26 16:15:46 | 显示全部楼层
我已经弄清楚了,构造的时候时先调用父类,再逐级调用子类,析构的时候刚刚相反,为先调用子类,再逐级调用父类

我上面之所以没能打印出空间已释放,是因为我没有初始化pname,pname为空,所以不用被delete,其实还是会运行到这一步的。

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-6-2 19:28

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表