Как новые действия
Распределение-выражение - содержать выражения создать оператор - делает 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;
Оператор разрешения области действия (::принудительное использование глобального) создать оператор.