10

这个符号似乎是编译器生成的析构函数。这个“编译器生成的析构函数”和“标量删除析构函数”有什么区别?是否有任何其他类型的编译器生成 ctor/dtor?

4

1 回答 1

12

名为'scalar deleting destructor'和的函数是 VC 编译器在为语句'vector deleting destructor'生成代码时创建的辅助函数。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);
}
于 2012-06-27T12:16:17.287 回答