Как новые действия

Распределение-выражение - содержать выражения создать оператор - делает 3 действия:

  • Найдите и резервирует хранилище для объекта или объектов, которые должны быть выбраны.При завершении этот шаг, правильное количество хранения установлен, но еще не объекта.

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

  • Возвращает указатель на объекты, производного от типа указателя new-type-name OR имя типа.Программа использует этот указатель, чтобы получить доступ к вновь выделенный объект.

создать оператор вызывает функцию operator new.Для массивов любого типа, и для объектов, для которых нет класс" structили union типы, глобальная функция :: оператор new, вызывает для выбора хранилище.Объекты типа класса могут определять свои operator new функция статического элемента на основе в-класса.

Когда компилятор встречает создать оператор, чтобы выбрать тип объекта type, выдаваемые вызов type**:: оператор new (sizeof (** type )) или, если отсутствуют определяемые пользователем operator new определяет, :: оператор new (sizeof ( type )).Следовательно, создать оператор может выбрать правильное количество памяти для объекта.

ПримечаниеПримечание

Аргумент operator new type size_t.Этот тип определен в DIRECT.H, MALLOC.H, MEMORY.H, SEARCH.H, STDDEF.H, STDIO.H, STDLIB.H, STRING.H и TIME.H.

В грамматике позволяет устанавливать параметр Размещение (см. раздел грамматику для оператор new). Размещение параметр может использоваться только для реализации определяемых пользователем operator new; он обеспечивает дополнительную информацию, передаваемую operator new.Выражение with a Размещение поле как T *TObject = new ( 0x0040 ) T; преобразует значение T *TObject = T::operator new( sizeof( T ), 0x0040 ); если t класса имеет член новый оператор, в противном случае значение T *TObject = ::operator new( sizeof( T ), 0x0040 );.

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

ПримечаниеПримечание

Хотя в предыдущем примере отображаются только один аргумент в Размещение поле отсутствует ограничение на число дополнительных аргументов может передаваться operator new этот способ.

Даже в том случае, если operator new задает для типа класса глобальный оператор может использоваться с помощью формы этого примера:

T *TObject =::new TObject;

Оператор разрешения области действия (::принудительное использование глобального) создать оператор.

См. также

Ссылки

оператор new (C++)