VC++コンパイラは、プログラマによって提供されていない場合、誰でも確認してもらえますか?VC++は、定義されていない場合、各クラスに対してデフォルトの 'delete'演算子を提供します。
VC++で生成されたディスアセンブリコードには、すべてのクラスに共通の 'new'演算子があると言われています。ただし、クラスごとに「delete」演算子が存在します。
delete bPtr;
// The dis assembly code generated by vc++ for above line
....
**call Base::`scalar deleting destructor' (411253h)**
....
delete [] bPtrArr;
// The dis assembly code generated by vc++ for above line
....
**call Base::`vector deleting destructor' (41125Dh)**
....
コールスタック:
malloc.exe!Base::~Base() Line 128
malloc.exe!Base::`scalar deleting destructor'() + 0x2b bytes
malloc.exe!wmain(int argc=0x00000001, wchar_t * * argv=0x00343250) Line 173 + 0x2b bytes
malloc.exe!__tmainCRTStartup() Line 579 + 0x19 bytes
malloc.exe!wmainCRTStartup() Line 399
はい、正しいです。 –
@Dewあなたは質問をする際には注意が必要です。私は小文字で新しいものと削除を意味していると確信しています。しかし、その方が常に具体的で構文的には意味的に正しいと言えます。 – Invictus
編集中のコードは、各クラスに対して 'delete'の証拠ではありません。スカラーの場合は 'delete'と配列の場合は' delete [] 'の間に違いがあることを示しています。これは妥当かつ予想通りです。 – Blastfurnace