Raw указатель является указателем введен синтаксис языка с *
:
int* ptr;
Это нормальный POD («сырой» числовой адрес в памяти) переменной, поэтому она разрушает тривиальным. Что важно и раздражает о сырых указателей:
int* ptr = new int(42);
из-за того, что разрушение ptr
является не-оп, delete
не будет называться, и вы должны сделать это вручную. Умные указатели обертывают необработанные указатели и уничтожают объекты, на которые указывает (когда это необходимо).
В C++ 11 введены интеллектуальные указатели в стандартную библиотеку в виде unique_ptr
и shared_ptr
. Вы должны использовать их вместо boost, когда вы используете C++ 11.
Упоминание массивов происходит из-за того, что мы можем представлять массив как указатель на первый элемент и некоторое понятие размера. Например, char*
является указателем на первый символ в массиве, и мы знаем, что он заканчивается на '\0'
. Динамические распределения таких массивов выполняются оператором new[]
(и разрушениями на delete[]
); интеллектуальные указатели из стандартной библиотеки могут обрабатывать эти типы тоже, но в общем случае рекомендуется использовать std::vector
.