Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Основні частини пам’яті програми.




- код програми (містить команди програми й бібліотечних функцій, які викликаються у програмі);

– статична пам’ять (зберігає статичні змінні, що існують протягом усього процесу виконання програми);

– автоматична пам’ять, або програмний стек (містить змінні, локальні у викликах функцій);

– вільна пам’ять (містить дані, що створюються під час виконання програми за її вказівками).

Чим динамічні змінні відрізняються від статичних та автоматичних з погляду програми мовою високого рівня. Розмір вільної пам’яті обмежений тільки наявною пам’яттю комп’ютера, яку не зайнято іншими програмами. Це дозволяє створювати й обробляти масиви значно більшого розміру ніж у статичній або автоматичній пам’яті.

Чому змінні у вільній пам’яті називаються динамічними; Вони не мають імен у програмі й позначаються за допомогою встановлених на них вказівників.

Які операції мови С++ створюють і знищують динамічні змінні, що є їхніми операндами й результатами; Операція new з ім’ям типу як операндом створює динамічну змінну цього типу; значенням операції є адреса змінної.

Операція delete, операндом якої є ім’я вказівника, скажімо, delete p, звільняє ділянку пам’яті, на яку встановлено вказівник (знищує динамічну змінну).

Створення динамічної змінної за допомогою операції new та ознака успішності створення; Вільна пам’ять величезна, але обмежена, тому, коли створюється динамічна змінна, незайнятої ділянки потрібного розміру може й не бути. Тоді значенням операції new є NULL, що є ознакою невдалої спроби створити змінну. Звідси, після спроби створити змінну варто перевірити, чи не була ця спроба невдалою, й, якщо так, відповідно відреагувати.

Знищення динамічної змінної за допомогою операції delete; Операція delete p знищує не вказівник p, а змінну, на яку він вказує. Після звільнення вказівник продовжує вказувати на неї.

Чи можна повторно знищити одну й ту саму динамічну змінну; Залежно від компілятора спроба доступу до вже знищеної змінної може бути допустимою, або бути помилковою, або аварійно закінчувати програму (як і спроба звільнити вже звільнену змінну).

Чому для класів, об’єкти яких містять вказівники, як правило, необхідні власні конструктори, конструктори копії та деструктори; Якщо об’єкти містять поля-вказівники, то стандартних конструкторів зазвичай недостатньо. Адже, коли стандартний конструктор створює об’єкт, значенням вказівника в об’єкті є якась випадкова адреса. Спроба скористатися нею дає непередбачувані наслідки. Копіювання ж полів з іншого об’єкта призводить до того, що вказівники в різних об’єктах вказують на одну й ту саму змінну, що бажано далеко не завжди. Отже, якщо об’єкти класу містять вказівники, зазвичай необхідні власні конструктори.

Неглибоке та глибоке копіювання, різниця між ними; копіювання значень полів об’єкта називається неглибоким. Г либоке копіювання – копіювання всіх або деяких даних, досяжних з об’єкта за допомогою вказівників.

Чому неглибокого копіювання, як правило, недостатньо для роботи з об’єктами, що містять вказівники;

Тому що зазвичай при неглибокому копіюванні може виникнути ситуація коли вказівники з двох різних об’єктів вказають на одну і ту ж змінну, що небажано

Створення й знищення динамічного масиву за допомогою операцій new й delete;

p – вказівник типу T*. Присвоювання

p = new T [n]

створює масив елементів типу T з індексами 0, 1, …, n-1 і встановлює p на його перший елемент

Операція delete звільняє пам’ять з-під динамічного масиву. Якщо вказівник p встановлено на початок масиву, то масив знищується так.

delete [] p;

Що таке абстрактний тип даних і його реалізація; АТД – це набір операцій, що мають певні властивості, з деякими абстрактними елементами. Що це за елементи, АТД «не каже». На основі АТД можна створити реалізацію АТД – вибрати конкретну множину значень, тобто даних, організованих у певний спосіб, і написати підпрограми, що реалізують операції.

Опишіть поняття «стек»; Стек – це спосіб обробки даних, що додаються до деякого набору й вилучаються з нього за принципом LIFO (Last In, First Out – «останнім прийшов, першим пішов»).

Опишіть поняття «черга»; – це спосіб обробки даних, що додаються до деякого набору й вилучаються з нього за принципом FIFO (First In, First Out – «першим прийшов, першим пішов»).

Чи можна за допомогою двох стеків проімітувати роботу з чергою;

Звичайно що можна

Завдяки чому довжина рядкових значень об’єктів типу string не обмежена певним значенням;

Якщо рядкове значення об’єкта-рядка стає довшим ніж відведений для нього масив символів, то створюється інший масив з подвоєною довжиною, й у нього копіюється рядкове значення.

Які оператори мови С++ застосовні до операндів типу string; У класі означено операції присвоювання =, дописування +, дописування з присвоюванням +=, порівняння ==,!=, <, <=, >, >=, уведення з потоку >>, виведення в потік <<, індексації [] й деякі інші.

Що таке успадкування й яка від нього користь. Успадкування класів полягає в тому, що в оголошенні нового класу (нащадка, або похідного класу) використовують інший, раніше оголошений клас (батько, або базовий клас), до полів якого додають атрибути й методи. Застосування механізму успадкування дозволяє покращити повторне використання коду шляхом використання вже визначених властивостей та методів (поведінки) базових класів.

Що визначає специфікатор доступу в оголошенні успадкування. Специфікатор доступу - ключове слово перед назвою батька-нащадку в оголошенні - визначає одну з трьох різних можливостей доступу до полів базового класу за межами похідного.





Поделиться с друзьями:


Дата добавления: 2017-03-18; Мы поможем в написании ваших работ!; просмотров: 211 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Стремитесь не к успеху, а к ценностям, которые он дает © Альберт Эйнштейн
==> читать все изречения...

2252 - | 2200 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.