new 演算子を使用して要素を構築できる動的配列を「何らかの方法で」作成できるようにしたいと考えています。これが私が達成したいことです:
A* a = new A[3]; //or any equivalent syntax
new (&a[0]) A(myparams1); //placement new on first slot
new (&a[1]) A(myparams2, ...); //placement new on 2nd slot
new (&a[2]) A(myparams3, ...); //placement new on 3rd slot
delete[] a; //correct deletion of all elements
a
このコードが機能することは承知していますが (上書きされた 3 つの要素を除いて)、最初の呼び出しで3 つの既定の要素を作成することは避けたいと思いますnew[]
。ここでは、 を呼び出す前に常に3 つの要素を配置すると仮定していますdelete[]
。へのインテリジェントな呼び出しを使用することで、そのようなことを達成できると考えていますA::operator new[]
が、その方法はわかりません。誰にもアイデアはありますか?それは主に好奇心のためです