このシンボルは、コンパイラによって生成されたデストラクタのようです。この「コンパイラ生成デストラクタ」と「スカラー削除デストラクタ」の違いは何ですか? ctor/dtor で生成されたコンパイラの他のタイプはありますか?
質問する
8540 次
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 に答える