只执行了基类的析构函数,而没有执行派生类的析构函数?

来源:互联网 发布:淘宝南山射钉枪配件 编辑:程序博客网 时间:2024/05/22 05:09

请解释下下面c++中程序中为什么只执行了基类的析构函数,而没有执行派生类的析构函数?

2014-03-16 23:34375005009zd | 分类:C/C++ | 浏览45次

运行结果:

  executing point destructor           //为什么只执行了基类的析构函数?

2014-03-17 13:32提问者采纳
因为你用point *p=new circle;创建的是父类指针p,只是它指向了一个新创建的子类型的对象。delete p销毁的是父类的指针,跟子类无关,所以不执行子类的析构;只有销毁子类指针时才先执行子类析构,再执行父类析构。你把point *p=new circle;改成circle *p=new circle;,销毁p时就会输出executing Circle destructorexecuting Point destructor来。
提问者评价
谢谢!
0 0