【发布时间】:2011-10-01 21:20:32
【问题描述】:
这个问题是关于代码解释,而不是代码调试。我正在使用的代码有效。 我正在使用公共代码,我很想看看他们的“增长数组”模板之一,它看起来像这样:
template <typename TYPE>
TYPE *grow(TYPE *&array, int n, const char *name)
{
if (array == NULL) return create(array,n,name);
bigint nbytes = ((bigint) sizeof(TYPE)) * n;
array = (TYPE *) srealloc(array,nbytes,name);
return array;
}
而函数 srealloc 看起来像这样:
void *Memory::srealloc(void *ptr, bigint nbytes, const char *name)
{
if (nbytes == 0) {
destroy(ptr);
return NULL;
}
ptr = realloc(ptr,nbytes);
if (ptr == NULL) {
error();
}
return ptr;
}
请暂时忽略创建功能。我的主要问题是为什么他们在模板中进行指针转换和取消引用array?这样做有什么好处?如果他们根本没有*& 怎么办?
谢谢!
【问题讨论】:
标签: c++ pointers dereference