我提到的代码在链接中 - > http://upcoder.com/3/roll-your-own-vector 在这个例子中,在copyrange方法中,他们使用new运算符,如下面的代码所示。
static void
copyRange(T* begin, T* end, T* dest)
{
while(begin != end)
{
new((void*)dest) T(*begin);
++begin;
++dest;
}
}
任何人都可以解释new()在这种情况下的工作原理吗?
我可以写new (dest) T(*begin);
而不是new((void*)dest) T(*begin);
,因为dest已经是指向T的指针。我为什么要把它转回void*
?