私は例に出くわしました:
#include <iostream>
#include <stdexcept>
using namespace std;
class A{
public:
A():m_n(m_object_id++){}
~A(){cout << m_n;}
private:
const int m_n;
static int m_object_id;
};
int A::m_object_id=0;
int main()
{
A * const p = new A[3];
A * const q = reinterpret_cast<A * const> (new char[3*sizeof(A)]);
new (q) A;
new (q+1)A;
q->~A();
q[1].~A();
delete [] reinterpret_cast<char *>(q); // -> here
delete[] p;
cout << endl;
return 0;
}
出力:
34210
誰かが説明できますかdelete [] reinterpret_cast<char *>(q); // -> here
、それが何をしていて、出力を生成していますか?
編集
私の質問は、delete [] reinterpret_cast<char *>(q);
なぜ~A(){cout << m_n;}
そうdelete[] p;
ですか?