我希望能够“以某种方式”创建一个动态数组,它仍然可以让我使用 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
我知道这段代码可以工作(减去覆盖的 3 个元素),但我想避免a
在第一次调用new[]
. 我在这里假设我总是在调用之前放置 3 个元素delete[]
。我在想这样的事情可以通过使用智能调用来实现,A::operator new[]
但我不确定如何。有谁有想法吗?主要是出于好奇