2

为什么要在以下代码中*&的类型名称 ( ) 之后使用?T*&指针不是a指针吗?如果是,那为什么我不应该使用**呢?

template <class T> void CreateArray(T*& a, int n)
{
   a = new double[n];
}

int main()
{
  double* a;
  CreateArray<double>(a,3);
  return 0;
}
4

2 回答 2

5

不是指向指针的指针吗?

不,它是对指针的引用。

那为什么我不应该使用 ** 呢?

你可以这样做,但它使调用端和函数内部的使用变得有点复杂。但是,您可以以任何一种方式编写具有相同整体效果的函数。

于 2013-05-30T17:06:31.557 回答
2

T*&是对指针的引用,现在虽然幕后的引用可以实现为指针,但它与T**. 您绝对可以使用 aT **来完成相同的事情,但它不会是惯用的 C++ 并且不会那么简单,使用引用可以让您不必担心如何通过引用传递。

于 2013-05-30T17:08:31.803 回答