此符号似乎是编译器生成的析构函数。这个''编译生成的析构函数'和'标量删除析构函数'有什么区别?是否还有其他类型的编译器生成ctor / dtor?
答案 0 :(得分:10)
名为'scalar deleting destructor'
和'vector deleting destructor'
的函数是VC编译器在为delete
语句生成代码时创建的辅助函数。不要将它们与也可能由编译器生成的类析构函数混淆。
前者可以用伪代码表示为
void scalar_deleting_destructor(A* pa)
{
pa->~A();
A::operator delete(pa);
}
,后者为
void vector_deleting_destructor(A* pa, size_t count)
{
for (size_t i = 0; i < count; ++i)
pa[i].~A();
A::operator delete[](pa);
}