Void main()

{

int аrr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

Vect a(аrr, 10);

a.Print ();

cout << a[5] << endl;

cout << a[12] << endl;

}

 

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

 

1 2 3 4 5 6 7 8 9 10

Невірний індекс (i = 12)

Завершення програми

 

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

Оператор [] можна визначати тільки як метод класу.

 

Завдання

 

Завдання отримуються з розділу 3 "Спадкування класів" та доповнюються перевантаженими операторами.

 

РОЗДІЛ 6. ОБРОБКА ВИКЛЮЧНИХ СИТУАЦІЙ

6.1 Загальні відомості про виключні ситуації

Виключна ситуація, або виключення – це виникнення непередбаченої або аварійної події, яка може породжуватися некоректним використанням апаратури. Наприклад, це ділення на нуль або звернення за неіснуючою адресою пам'яті. Зазвичай ці події приводять до завершення програми з системним повідомленням про помилку. C++ дає програмістові можливість відновлювати програму і продовжувати її виконання.

Виключення C++ не підтримують обробку асинхронних подій, таких, як помилки устаткування або обробку переривань, наприклад, натиснення клавіш Ctrl+C. Механізм виключень призначений тільки для подій, які відбуваються в результаті роботи самої програми і вказуються явним чином. Виключення виникають тоді, коли деяка частина програми не змогла зробити те, що від неї було потрібно. При цьому інша частина програми може спробувати зробити що-небудь інше.

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

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

Місце, в якому може відбутися помилка, повинне входити в контрольований блок – складеного оператора, перед яким записано ключове слово try. Розглянемо, яким чином реалізується обробка виключних ситуацій:

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

2. Відшукується відповідний обробник виключення і йому передається управління.

3. Якщо обробник виключення не знайдений, викликається стандартна функція terminate, яка викликає функцію abort, що аварійно завершує поточний процес. Можна встановити власну функцію завершення процесу.

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

 








Дата добавления: 2014-12-26; просмотров: 959;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.