请考虑以下代码:
PFArrayD *p = new PFArrayDBak;
...
delete p;
假设PFArrayDBak是基类PFArrayD的派生类。
“如果基类PFArrayD的析构函数标记为虚拟,则当删除应用于p时,将调用类PFArrayDBak的构造函数(因为指向的对象是PFArrayDBak类型)“。
为什么只有在对p应用delete时才会调用PFArrayDBak类的构造函数?在堆上分配内存时,是不是在第一行调用了构造函数?
评论指出这是一个拼写错误,应该说析构函数不是构造函数。
答案 0 :(得分:2)
ypnos写道:“对我来说似乎是一个错字。它应该声明'[..]类[...]的析构函数。你的来源是什么?”