static
变量,那么下面的代码是模拟带参数的数组new操作new T[N] (x,y);
的正确方式吗?template<typename T>
void* operator new [] (size_t size, const T &value)
{
T* p = (T*) malloc(size);
for(int i = size / sizeof(T) - 1; i >= 0; i--)
memcpy(p + i, &value, sizeof(T));
return p;
}
使用方法如下:
struct A
{
A () {} // default
A (int i, int j) {} // with arguments
};
int main ()
{
A *p = new(A(1,2)) A[10]; // instead of new A[10](1,2)
}
const T& value
而不是T value
来避免一些复制。 - seheT value ... memcpy(..., &value, ...);
绝对不是一个好主意。 - Martin Baoperator delete
。但是不要这样做。使用std::vector
。 - Alexandre C.