Visual c++ “符号”的含义是什么;向量删除析构函数;在VC&x2B+;?

Visual c++ “符号”的含义是什么;向量删除析构函数;在VC&x2B+;?,visual-c++,destructor,Visual C++,Destructor,此符号似乎是编译器生成的析构函数。“编译器生成的析构函数”和“标量删除析构函数”之间有什么区别?是否还有其他类型的编译器生成的构造函数/dtor?名为'scalar deleting destructor'和'vector deleting destructor'的函数是VC编译器在为delete语句生成代码时创建的帮助函数。不要将它们与类析构函数混淆,类析构函数也可能由编译器生成。 前者可以用伪代码表示为 void scalar_deleting_destructor(A* pa) { pa-

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

名为
'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);
}
void vector\u deleting\u destructor(A*pa,size\u t count)
{
用于(大小i=0;i
谢谢你,安德烈。我对这里的内部删除操作符有点困惑。这个标量删除析构函数是编译器生成的,由
delete a
调用,对吗?似乎删除的内部调用导致了递归?@Thomson让我试着说得更清楚些
delete a
是一个delete语句,即一种语言结构,不能与
a::operator delete混为一谈,后者是一个delete操作符,一个实际释放内存的函数。我现在手头没有C++标准,稍后我可以提供参考。