Объектно-ориентированное программирование на языке С++. Ноткин А.М. - 10 стр.

UptoLike

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

11
Имя деструктора совпадает с именем его класса, но предваряется
символом “~” (тильда).
Деструктор не имеет параметров и возвращаемого значения. Вызов
деструктора выполняется не явно (автоматически), как только объект клас-
са уничтожается.
Например, при выходе за область определения или при вызове опе-
ратора delete для указателя на объект.
string *p=new string “строка”);
delete p;
Если в классе
деструктор не определен явно, то компилятор генери-
рует деструктор по умолчанию, который просто освобождает память, заня-
тую данными объекта. В тех случаях, когда требуется выполнить освобож-
дение и других объектов памяти, например область, на которую указывает
ch в объекте string, необходимо определить деструктор явно:
~string(){delete []ch;}
Так же, как и для конструктора, не может
быть определен указатель
на деструктор.
Указатели на компоненты-функции.
Можно определить указатель на компоненты-функции.
тип_возвр_значения(имя_класса::*имя_указателя_на_функцию)
(специф_параметров_функции);
Пример
.
double(complex : :*ptcom)(); // Определение указателя
ptcom = &complex : : real; // Настройка указателя
// Теперь для объекта А можно вызвать его функцию
complex A(5.2,2.7);
cout<<(A.*ptcom)();
Можно определить также тип указателя на функцию
typedef double&(complex::*PF)();
а затем определить и сам указатель
PF ptcom=&complex::real;
Порядок выполнения работы.
1. Определить пользовательский класс в соответствии с вариантом
задания (смотри приложение).
2. Определить в классе следующие конструкторы: без параметров, с
параметрами, копирования.
                                   11

       Имя деструктора совпадает с именем его класса, но предваряется
символом “~” (тильда).
       Деструктор не имеет параметров и возвращаемого значения. Вызов
деструктора выполняется не явно (автоматически), как только объект клас-
са уничтожается.
       Например, при выходе за область определения или при вызове опе-
ратора delete для указателя на объект.
       string *p=new string “строка”);
       delete p;
       Если в классе деструктор не определен явно, то компилятор генери-
рует деструктор по умолчанию, который просто освобождает память, заня-
тую данными объекта. В тех случаях, когда требуется выполнить освобож-
дение и других объектов памяти, например область, на которую указывает
ch в объекте string, необходимо определить деструктор явно:
~string(){delete []ch;}
       Так же, как и для конструктора, не может быть определен указатель
на деструктор.

     Указатели на компоненты-функции.
     Можно определить указатель на компоненты-функции.
     тип_возвр_значения(имя_класса::*имя_указателя_на_функцию)
(специф_параметров_функции);
     Пример.
     double(complex : :*ptcom)(); // Определение указателя
     ptcom = &complex : : real; // Настройка указателя
     // Теперь для объекта А можно вызвать его функцию
     complex A(5.2,2.7);
     cout<<(A.*ptcom)();

     Можно определить также тип указателя на функцию
     typedef double&(complex::*PF)();
     а затем определить и сам указатель
     PF ptcom=&complex::real;

          Порядок выполнения работы.
     1. Определить пользовательский класс в соответствии с вариантом
задания (смотри приложение).
     2. Определить в классе следующие конструкторы: без параметров, с
параметрами, копирования.