删除时调用构造函数?

时间:2012-12-18 03:16:48

标签: c++ constructor

请考虑以下代码:

PFArrayD *p = new PFArrayDBak;
...
delete p;

假设PFArrayDBak是基类PFArrayD的派生类。

“如果基类PFArrayD的析构函数标记为虚拟,则当删除应用于p时,将调用类PFArrayDBak的构造函数(因为指向的对象是PFArrayDBak类型)“。

为什么只有在对p应用delete时才会调用PFArrayDBak类的构造函数?在堆上分配内存时,是不是在第一行调用了构造函数?

评论指出这是一个拼写错误,应该说析构函数不是构造函数。

1 个答案:

答案 0 :(得分:2)

ypnos写道:“对我来说似乎是一个错字。它应该声明'[..]类[...]的析构函数。你的来源是什么?”