ВУЗ:
Составители:
Рубрика:
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. Определить в классе следующие конструкторы: без параметров, с
параметрами, копирования.
Страницы
- « первая
- ‹ предыдущая
- …
- 8
- 9
- 10
- 11
- 12
- …
- следующая ›
- последняя »
