У 42______________________________^астъ //. Программирование на C++

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

Операция new. Да, new — операция. Это объясняет, в частности, то, зачем были нужны вышеизложенные рассуждения об оператор-функциях. В действительности операция new реализована как оператор-функция, но синтаксически она выглядит более похожей на операцию, хотя действует, скорее, как функция.

Операция new используется двояко: во-первых, для размещения одиночного объекта, и во-вторых, для размещения массива объектов. В обоих случаях, если вызов операции new был успешным, она возвращает указатель на первый элемент. Поэтому переменные-указатели используются для распределения свободной памяти в куче.

Динамическое размещение единичного объекта. В данном контексте под объектами подразумеваются переменные (разумеется, переменную базового типа можно рассматривать как объект класса этого типа). Общая форма записи операции new выглядит таким образом:

var_type *var name = new var type;

ИЛИ

var type *var name;

var_name = new var_type;

где var__type и var_name следует заменить реальными типом и именем переменной. К примеру, для целых это будет выглядеть так:

int *pvar = new int;

ИЛИ

int *pvar;

pvar = new int;

Из второго примера видно, что объявление переменной и присваивание ей указателя на некую область памяти могут быть отделены друг от друга.

Совет

Указатели можно использовать для адресации существующих объектов или адресов вне всякой связи с операцией new.

Именно возможность работы с адресами памяти делает C++ языком, подходящим для весьма широкого круга задач, в том числе системного программирования.

Когда ресурс, на который ссылается указатель, более не нужен, он должен быть освобожден. Детали см. в разделе "Операция delete".