Обращение к динамической памяти осуществляется в ходе выполнения программы с помощью операции new. Операция new выделяет в динамической памяти фрагмент, размер которого определяется типом, заданным в операции new. Синтаксис операции new:
new тип;
В точку вызова она возвращает адрес выделенного фрагмента. Если тип это имя класса, то операция new возвращает адрес объекта.
Пример:
Time *ob = new Time(17,45); // вызов конструктора в третьей форме
delete ob; // уничтожение динамического объекта класса
65. Деструктор класса. Назначение, синтаксис определения. Уничтожение объектов класса.
При создании объекта ему выделяется память в стеке. Деструктор вызывается автоматически для удаления объекта и возвращения системе занимаемой им фрагмента памяти. Локальные объекты удаляются тогда, когда выходят из области видимости (при выходе из блока). Глобальные объекты удаляются при завершении программы.
Имя деструктора совпадает с именем класса, но с символом ~ (тильда) в начале.
Свойства деструктора:
- не имеет параметров;
- не возвращает значений;
- не наследуется;
- не может быть объявлен с атрибутами static, const или volatile.
Пример:
classB{
int a; // закрытый элемент
public: B(); // конструктор
~B(); // деструктор
voidshow();
};
B::B() {cout << ”содержимое конструктора \n”); a = 10;}
B::~B() {cout << ”удаление объекта \n”;}
voidB::show() {cout << a << ”\n”;}
intmain()
{ B ob(); // вызов конструктора
ob.show();
return 0;
}
66. Наследование. Виды наследования. Схема и синтаксис простого наследования. Передача параметров конструктору базового класса. Вызов конструкторов и деструкторов при создании и уничтожении объекта производного класса.