新数据类型*[10]如何返回指针指针?

InQ*_*ive 0 c++ arrays pointers new-operator

我在C++中遇到了Hash Map实现.HashMap的构造函数包含下面的代码.这条线new HashEntry*[TABLE_SIZE]说的是什么.我以前从未见过这样的结构.它如何返回指针指针?

class HashMap {
    private:
          HashEntry **table;
    public:
          HashMap() {
                table = new HashEntry*[TABLE_SIZE];
                for (int i = 0; i < TABLE_SIZE; i++)
                      table[i] = NULL;
          }
};
Run Code Online (Sandbox Code Playgroud)

Bar*_*rry 5

new表达总是返回一个指针.new根据[expr.new],一个数组的表达式产生了强调我的意思:

当分配的对象是数组时(即,使用noptr-new-declarator语法或new-type-id或type-id表示数组类型),new-expression 产生指向初始元素的指针(如果任何)数组.[注:既new intnew int[10]具有类型int*和类型new int[i][10]int (*)[10] 末端音符]的属性说明符-SEQ的noptr新声明符appertains到相关联的数组类型.

该行正在创建一个新HashEntry*的大小数组TABLE_SIZE.该表达式的返回类型是指向初始元素的指针,该元素是类型的HashEntry*.因此HashEntry**.