Составители:
Рубрика:
23
//Листинг 8. Вызов деструктора объекта
main()
{MyClass m; //создание объекта статически
MyClass *ptm=new MyClass; //создание объекта динамически
…
delete ptm; //вызов деструктора для динамического объекта
…
//вызов деструктора для статического объекта
}
Определим деструктор для класса array.
struct array
{ …
~array()
{delete []mas;
}
…
};
Деструктор в отличие от конструктора допускает явный вызов вида:
имя_обекта.~имя_класса()
адрес_объекта->~имя_класса()
3.3. Область видимости компонент класса
У рассмотренного выше класса array есть еще один существенный недоста-
ток – все компоненты этого класса являются общедоступными. Это означает,
что к любому компонентному данному объекта можно обратиться, например
,
из функции main(), минуя вызов методов класса.
//Листинг 9. Нарушение принципа инкапсуляции
main()
{ array m(10);
delete m.mas;
for(int i=0;i<m.n;i++)
cin>>m.mas[I];
}
Таким образом, проигнорировав интерфейс объекта, программист может ра-
ботать с компонентными данными, и целостность объекта не может быть гаранти-
рована. Выход из создавшегося положения уже известен – необходимо выделить в
//Листинг 8. Вызов деструктора объекта main() {MyClass m; //создание объекта статически MyClass *ptm=new MyClass; //создание объекта динамически … delete ptm; //вызов деструктора для динамического объекта … //вызов деструктора для статического объекта } Определим деструктор для класса array. struct array {… ~array() {delete []mas; } … }; Деструктор в отличие от конструктора допускает явный вызов вида: имя_обекта.~имя_класса() адрес_объекта->~имя_класса() 3.3. Область видимости компонент класса У рассмотренного выше класса array есть еще один существенный недоста- ток – все компоненты этого класса являются общедоступными. Это означает, что к любому компонентному данному объекта можно обратиться, например, из функции main(), минуя вызов методов класса. //Листинг 9. Нарушение принципа инкапсуляции main() { array m(10); delete m.mas; for(int i=0;i>m.mas[I]; } Таким образом, проигнорировав интерфейс объекта, программист может ра- ботать с компонентными данными, и целостность объекта не может быть гаранти- рована. Выход из создавшегося положения уже известен – необходимо выделить в 23
Страницы
- « первая
- ‹ предыдущая
- …
- 21
- 22
- 23
- 24
- 25
- …
- следующая ›
- последняя »