Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
为什么要在以下代码中*&的类型名称 ( ) 之后使用?T*&指针不是a指针吗?如果是,那为什么我不应该使用**呢?
*&
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; }
不是指向指针的指针吗?
不,它是对指针的引用。
那为什么我不应该使用 ** 呢?
你可以这样做,但它使调用端和函数内部的使用变得有点复杂。但是,您可以以任何一种方式编写具有相同整体效果的函数。
T*&是对指针的引用,现在虽然幕后的引用可以实现为指针,但它与T**. 您绝对可以使用 aT **来完成相同的事情,但它不会是惯用的 C++ 并且不会那么简单,使用引用可以让您不必担心如何通过引用传递。
T**
T **