Язык С++ и программирование на нем. Рейзлин В.И. - 98 стр.

UptoLike

Составители: 

100
18.11. Конструктор и операция new
Если абстрактный тип имеет конструктор без аргументов, то об-
ращение к операции new полностью совпадает с тем, что используется
для выделения памяти под обычные типы данных без инициализирую-
щего выражения.
class integer {int i;};
void main () {integer *ptr = new integer; . . .}
Если же конструктор класса integer имеет аргументы, то список
аргументов помещается там же, где при работе со стандартными типами
данных находится инициализирующее выражение.
class integer {int i;
public:
integer ();
integer (int j): i(j) {}
};
void main(){
int *ip = new int (10);
integer *iptr = new integer (30);
}
Если в операции new происходит обращение к конструктору без
аргументов, то допустимы обе следующие формы записи:
integer *ip1 = new integer ();
integer *ip2 = new integer;
Если конструктор без аргументов для класса X не определён, то
при попытке выполнить оператор
X *xp = new X;
компилятор выдаст сообщение об ошибке. В этом случае требуется явно
определить конструктор без аргументов.
18.12. Вызов деструктора
Вызов деструктора для объекта абстрактного типа производится
автоматически при его выходе из области существования. Для локаль-
ных переменных деструктор вызывается при выходе из блока, в котором
эта переменная была объявлена. Для глобальных переменных вызов де-
структора является частью процедуры завершения программы, выпол-
няемой после функции main(). Выход указателя на объект абстрактного