Реферат: Объективное программирование
} аа}
void main() void main()
{ {
// Опред-ние переменных a,b // Опред-ние объектов a,b класса dat
dat a,b; dat a,b;
a.day = 5; // Непосредственное использование
a.month = 12; // приватной части объекта запрещено
bAA.SetDat("12,12,1990"); b.Setdat("12,12,1990");
} }
"Приватная" часть класса не обязательно должна следовать в начале определения класса. Для ее обозначения в произвольном месте определения класса можно использовать служебное слово private.
Tаким образом в первом приближении класс отличается от структуры четко определенным интерфейсом доступа к его элементам.
Объекты класса обладают всеми свойствами переменных, в том числе такими, как область действия и класс памяти (время жизни).
Последнее свойство наиболее интересно, так как процессы создания и уничтожения объектов класса могут сопровождаться вызовом функций (конструктор и деструктор). Напомним, что по классам памяти (и времени жизни) в Си различаются переменные:
- статические (внешние), создаваемые в статической памяти программы и существующие в течение всего времени работы программы;
- автоматические, создаваемые в стеке в момент вызова функции и уничтожаемые при ее завершении;
- динамические, создаваемые и уничтожаемые в свободной памяти задачи в моменты вызова функций malloc() и free() или выполнения операторов new и delete.
Соответственно в программе возможно определение статических, автоматических и динамических объектов одного класса:
class dat
{ ....... }
dat a,b; // Статические объекты
dat *p; // Ссылка на объект
void main()
{
dat c,d; // Автоматические объекты
p = new dat; // Динамический объект
...
delete p; // Уничтожение динамического объекта
} <---------------------// Уничтожение автоматических объектов
3.2. Создание и уничтожение объектов.