Что означает звездочка перед скобками при создании объекта в C ++?

Я читал пример реализации хеш-таблицы на C ++ с веб-сайта и увидел это.

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

Строка с синтаксисом, который я не понимаю:

table = new HashEntry*[TABLE_SIZE];

Что значит иметь звездочку перед такими скобками?

1

Решение

new HashEntry*[TABLE_SIZE] выделяет и создает массив TABLE_SIZE элементы, где каждый элемент является HashEntry*то есть указатель на HashEntry,

Более современная C ++ версия этого будет:

private:
std::vector<std::unique_ptr<HashEntry>> table;
public:
HashMap() : table(TABLE_SIZE) {}

Это позволяет избежать необходимости определять собственный деструктор и, как правило, безопаснее.

5

Другие решения

Звездочка указывает, что это указатель

Вот несколько ссылок

http://www.cprogramming.com/tutorial/c/lesson6.html

http://www.tutorialspoint.com/cplusplus/cpp_pointers.htm

http://www.augustcouncil.com/~tgibson/tutorial/ptr.html

0

По вопросам рекламы [email protected]