Глобальні та локальні об'єкти

Підсумуємо інформацію про локальні та глобальні об'єкти, яка тією чи іншою мірою вже зустрічалась вище.

Глобальні об'єкти. Конструктори глобальних об'єктів викликаються до початку виконання функції main() у порядку їх наступності. Це забезпечує ініціалізацію всіх глобальних об'єктів класу до формального початку виконання програми – виклику функції main(). Деструктори глобальних об'єктів класу викликаються як частини коду завершення програми, після відпрацювання всіх функцій завершення, заданих викликом функції atexit(). Деструктори не викликаються, якщо програма завершується за допомогою функції abort().

Локальні об'єкти. Автоматичні об'єкти класу, оголошені локальними у функції, створюються разом з викликом функції та знищуються разом із завершенням її роботи. Автоматичні об'єкти зберігаються в стеку, як і звичайні автоматичні змінні. При завершенні роботи функції викликаються деструктори локальних об'єктів. Якщо програма завершується за допомогою виклику функції exit(), то деструктори глобальних об'єктів викликаються як завжди, а локальних – не викликаються. Наприклад:

class empty{

public:

char*obj_name;

empty(char*name)

{cout<<"створений об’єкт з ім’ям"<<name<<"класу empty\n";

obj_name=name;}

~empty()

{cout<<"об’єкт з ім’ям"<<obj_name<<"знищений\n";}

} one("one");

Void main(void)

{empty second("second");}

Результати роботи програми:

Створений об’єкт з ім’ям one класу empty

Створений об’єкт з ім’ям second класу empty

Об’єкт з ім’ям second знищений


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: