在C ++中符号“vector deletion destructor”是什么意思?

时间:2012-06-26 08:54:44

标签: visual-c++ destructor

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

1 个答案:

答案 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);
}