Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекції ООП1.doc
Скачиваний:
5
Добавлен:
17.11.2019
Размер:
553.98 Кб
Скачать

Множинне наслідування.

В мові С++ в якості базових можна задати декілька класів. В такому випадку похідний клас наслідує методи всіх його базових класів.

class A

{

Class B

public:

………..

};

c

Class C

lass B

{

};

c

Class D

lass C: public A, public B

{

Class A

};

В даному випадку клас С наслідує двом класам А та В.

Заняття №10

Тема: Створення \ знищення об'єктів

Мета: Освоїти поняття „час життя" об'єкта, „область видимості". Класи

пам'яті.

План заняття:

  1. Поняття „час життя" об'єкта та „область видимості".

  2. Класи пам'яті.

1. Поняття „час життя" об'єкта та „область видимості".

Автоматичні змінні визначенні всередині якоїсь функції або метода класу. Призначення автоматичних змінних - зберігання даних під час виконання функції чи методу. Після закінчення виконання цієї функції автоматичні змінні знищуються і дані втрачаються. Отже автоматичні змінні представляють собою тимчасові змінні.

Іноді тимчасове зберігання даних потрібне на більш короткий час, чим виконання функції. По-перше, оскільки С++ описання змінних на початку функції або методу не є обов'язковим, то змінну можна описати безпосередньо перед використанням. По-друге, змінну можна описати всередині блоку - групи операторів у фігурних дужках. При виході з блоку така змінна знищується ще до закінчення функції. Третім способом можливого тимчасового використання змінної є описання змінної в заголовку циклу for лише для ітерації циклу:

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

Область видимості імен.

Між іменами змінних, функцій, типів і т.п. при використанні одного і того ж імені в різних частинах програми можуть виникати конфлікти. Для

вирішення даної проблеми у мові програмування С++ існує поняття видимості імен.

Мінімальною областю видимості імен є блок. Імена описані у блоці мають різнитися. При спробі описання двох змінних з однаковими іменами виникне помилка. Імена, описані у блоці, видимі (доступні) в цьому блоці та у всіх вкладених блоках. Аргументи функції, описані в її заголовку, розглядаються як описані в тілі цієї функції.

Імена, описані в класі, видимі із середини цього класу, тобто в усіх його місцях. Для звернення до атрибуту класу, потрібно використовувати операції ".","->" або"::".

Для імен описаних поза межами блоків, областю видимості є весь текст файлу після опису імені.

Опис може перекривати таке ж саме ім'я, яке описане у зовнішній області

Область видимості.

Окрім значень і типу, змінні в С++ мають ще одну властивість - область видимості, тобто частину програми, в якій описана ця змінна.

Розглянемо наступний фрагмент коду:

// ця змінна доступна для усіх функцій

// та існує на протязі всього часу роботи програми

// (глобальна область видимості)

int intGlobal;

// змінна intChild доступна тільки у функції Child( )

// та існує лише під час виконання

// У функції Child( ) або викликана нею

// (область видимості функцій)

{

int intChild;

}

// Змінна intParent має область видимості функції

void parent(void)

{

int intParent = О; Child( );

int intLater = О;

intParent = intLater;

}

int main(int nArgs, char*pArgs[])

{

parent( );

}

Програма розпочинає виконувати функцію main( ). У першому ж рядку

main( ) викликає функцію parent( ). В цій функції відбувається виконання змінної intParent( ), що має область видимості, обмежену функцією. Така змінна має назву локальної і доступна лише в цій функції.

В другому рядку parent( ) викликається функція child( ). Ця функція також оголошує локальну змінну – intChild, областю видимості якої є функція child( ). При цьому intParent функції child( ) недоступна (і область видимості intParent не розповсюджується на функцію child( )), проте сама змінна продовжує існувати.

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

Після повернення із функції child( ) продовжується виконання підпрограми parent( ), а в наступному рядку оголошується змінна intLater, область видимості якої обмежена функцією parent( ). В момент повернення у функцію main( ) змінні intLater і intParent виходять з області видимості і знищуються.

Окрім локальних змінних, програміст може оголошувати змінні поза межами функцій, такі змінні називаються глобальними і доступні із будь-якого місця програми (область видимості таких змінних - вся програма).Оскільки intGlobal у приведеному коді оголошена глобально, вона доступна на протязі роботи всієї програми із середини будь якої із трьох функцій.

Заняття №11

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]