课程
/后端开发
/C++
/C++远征之多态篇
不应该是
~Coordinate
~Circle()
~Shape()
吗?
为什么是
2016-07-23
源自:C++远征之多态篇 2-5
正在回答
看图不解释
不是这样的,和其他没关系,这个主要看你~Circle()中代码写的顺序
Circle::~Circle()
{
cout << "析构函数 Circle::~Circle()" << endl;//在前
delete m_pCenter;
m_pCenter = NULL;
}
这样就先输出了 ~Circle()
cout << "析构函数 Circle::~Circle()" << endl;//在后
这样就先输出了 Coordinate
这样就输出了 ~Circle()
这样就输出了 Coordinate
我明白了,因为 ~Circle()里先输出了 ~Circle(),然后才delete m_pCenter
而且 Circle和 Coordinate并不是继承的关系,是包含,所以不会先执行 ~Coordinate
举报
本教程将带领大家体会面向对象三大特性中的多态特性