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

UptoLike

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

122
Заметим, что вместо Z = X+ Y + на велосипеде“ возможна и та-
кая форма обращения к operator +():
Z = operator + (X, Y);
Z = operator + (Z, на велосипеде“);
21.2. Операции new и delete при работе
с абстрактными типами
Операции new и delete реализуются через функции и вне зависи-
мости от того, описаны или нет operator new() и operator delete как static,
они всегда являются статическими функциями. Операция new предо-
пределена для любого типа, в том числе и для абстрактного типа, опре-
деленного через механизм классов. Можно переопределять как глобаль-
ную функцию operator new (), так и функцию class x::operator new ().
Глобальные new и delete переопределяются обычным образом через
механизм соответствия сигнатур.
Как и при переопределении глобальной функции operator new (),
переопределенная функция classX::operator new () должна возвращать
результат типа void* , а ее первый аргумент должен иметь тип size_t (то
есть unsigned), в которой хранится размер выделяемой памяти. Замети,
что при использовании операции new этот аргумент не указывается, а
размер необходимого участка памяти вычисляется автоматически исхо-
дя из указанного типа.
21.3. Использование new при создании динамического
объекта абстрактного типа
Рассмотрим фрагмент:
class C{ . . .
public:
C (int arg ){ . . .}
};
. . .
C * cp = new C (3);
Создание динамического объекта типа С можно разбить на две
стадии:
Собственно создание объекта это выполняет конструктор.
Размещение этого объекта в определенной области памяти это
делает операция new.