ВУЗ:
Составители:
Рубрика:
123
При этом вначале выполняется функция operator new (), а затем
уже конструктор размещает создаваемый объект в выделенной памяти.
Операцию new можно переопределить:
class cl{ . . .
public:
cl () {cout << “Конструктор класса cl.\n“;}
void* operator new (unsigned);
};
void* cl::operator new (unsigned size){
cout <<“Функция operator new () класса cl;\n“;
void* p = new char [size ]; // Глобальная new!
if (p) return p; else {
cout << “Нет памяти для объекта типа cl!;\n“; exit(1);}
}
void main (){
cl * cp = new cl;}
Результат:
Функция operator new () класса cl;
Конструктор класса cl.
21.4. Операция delete
Выполнение операции delete применительно к указателю на объ-
ект абстрактного типа приводит к вызову деструктора для этого объек-
та.
сl * clp = new cl (5); // Вызов конструктора cl (5);
. . .
delete clp; // вызов деструктора ~ cl () перед освобождением
// динамической памяти.
Функцию x::operator delete () можно переопределить в классе x,
причем она может иметь только две формы:
void operator delete (void * );
void operator delete (void *, size_ t );
Если присутствует вторая форма данной операци, то компилятор
использует именно ее.
Страницы
- « первая
- ‹ предыдущая
- …
- 119
- 120
- 121
- 122
- 123
- …
- следующая ›
- последняя »
