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

关于析构函数的调用问题

不应该是

~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++远征之多态篇
  • 参与学习       66236    人
  • 解答问题       314    个

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

进入课程

关于析构函数的调用问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信