为了账号安全,请及时绑定邮箱和手机立即绑定

关于析构函数的调用问题

不应该是

~Coordinate

~Circle()

~Shape()

吗?

为什么是

~Circle()

~Coordinate

~Shape()


正在回答

4 回答

http://img1.sycdn.imooc.com//58cfba740001471203550178.jpg

看图不解释

0 回复 有任何疑惑可以回复我~

不是这样的,和其他没关系,这个主要看你~Circle()中代码写的顺序

Circle::~Circle()

{

cout << "析构函数 Circle::~Circle()" << endl;//在前

delete m_pCenter;

m_pCenter = NULL;

}

这样就先输出了 ~Circle()

Circle::~Circle()

{

delete m_pCenter;

m_pCenter = NULL;

cout << "析构函数 Circle::~Circle()" << endl;//在后

}

这样就先输出了 Coordinate


0 回复 有任何疑惑可以回复我~

不是这样的,和其他没关系,这个主要看你~Circle()中代码写的顺序

Circle::~Circle()

{

cout << "析构函数 Circle::~Circle()" << endl;//在前

delete m_pCenter;

m_pCenter = NULL;

}

这样就输出了 ~Circle()

Circle::~Circle()

{

delete m_pCenter;

m_pCenter = NULL;

cout << "析构函数 Circle::~Circle()" << endl;//在后

}

这样就输出了 Coordinate


0 回复 有任何疑惑可以回复我~

我明白了,因为 ~Circle()里先输出了 ~Circle(),然后才delete m_pCenter

而且 Circle和 Coordinate并不是继承的关系,是包含,所以不会先执行 ~Coordinate

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之多态篇
  • 参与学习       66211    人
  • 解答问题       334    个

本教程将带领大家体会面向对象三大特性中的多态特性

进入课程

关于析构函数的调用问题

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号