Программирование >>  Программирование на языке c++ 

1 ... 39 40 41 [ 42 ] 43 44 45 ... 159


class а2 constructor

class А1 constructor

class аТ constructor

class a2 constructor

class A2 constructor

< здесь надо нажать любую клавишу >

class А2 destructor

class a2 destructor

class a1 destructor

class A1 destructor

class a2 destructor

class al destructor

Пример 7 демонстрирует объявление массива объектов.

#include <iostream.h> #include <conio.h> class a {

int j; public:

a(int J) : j(J) { cout class a j constructor\n ; } ~a() { cout << class a j destructor\n ; }

class A {

int i;

a a1,a2; public:

A(int l=1,int J=2,int K=3) : a1(J),a2(K),i{l)

{ cout class A i constructor\n ; } ~A() { cout class A i destructor\n ; }

void main(void)

{ A a1[2]; объявление массива внешних объектов getchO; приостановка программы

до нажатия л.юбой клавиши



Результаты выполнения этой программы представятся в виде:

class а2 constructor

class аЗ constructor

class А1 constructor

class a2 constructor

class аЗ constructor

class A1 constructor

< здесь надо нажать любую клавишу >

class А1 destructor

class аЗ destructor

class a2 destructor

class A1 destructor

class аЗ destructor

class a2 destructor

В заключение приведем основные правила создания и уничтожения объектов: -♦ глобальные объекты конструируются в порядке их объявления в начале выполнения программы и разрушаются в обратном порядке при завершении программы;

-♦ локальные объекты конструируются, когда встречаются их объявления, и разрушаются в обратном порядке при завершении (или удалении из памяти) блока, в котором они объявлены;

глобальные статические объекты конструируются в порядке их объявления в начале,выполнения программы и разрушаются в обратном порядке при завершении программы;

локальные статические объекты конструируются один раз при первом описании этих объектов и разрушаются при завершении программы;

объекты в свободной области памяти конструируются и разрушаются при помощи соответствующих операторов для динамического выделения и освобояодения памяти (например, new и delete);

-♦ если объект сконструирован при помощи оператора для динамического выделения памяти (new), то он должен

5 В. А. Скляров 129



быть разрушен явно путем использования оператора для динамического освобождения памяти (delete);

если объект является компонентом другого класса, то конструктор объекта вызывается при вызове конструктора класса, в котором он объявлен (правила передачи параметров в конструктор объекта демонстрируются в примере 6). Конструкторы для нескольких компонентов-объектов вызываются в порядке их объявления перед конструктором класса, в котором они объявлены. Все деструкторы вызываются в обратном порядке;

можно объявить массив объектов одного типа, однако при этом хотя бы один из конструкторов этих объектов должен иметь параметры, заданные по умолчанию. При объявлении массива объектов невозможно определить параметры для конструкторов этих объектов;

конструкторы и деструкторы для массива объектов вызываются по правилам построения и разрушения объектов в определенной области памяти (глобальная память, локальная память, статическая память, свободная память, компоненты-объекты другого класса).



1 ... 39 40 41 [ 42 ] 43 44 45 ... 159

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика