У 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".