10

このシンボルは、コンパイラによって生成されたデストラクタのようです。この「コンパイラ生成デストラクタ」と「スカラー削除デストラクタ」の違いは何ですか? ctor/dtor で生成されたコンパイラの他のタイプはありますか?

4

1 に答える 1

12

'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);
}
于 2012-06-27T12:16:17.287 に答える