Лекция: Оператор dynamic_cast

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

Синтаксис використання оператора наступний:

 

dynamic_cast<type>(expr)

 

В| кутових дужках замість type задається цільовий тип, до якого потрібно перетворити значення виразу expr, заданого в круглих дужках.

Цільовий тип повинен бути типом вказівника або посилання; результат приведення виразу теж стає вказівником або посиланням. Таким чином, оператор dynamic_cast використовується для приведення типу одного вказівника або посилання до типу іншого вказівника або посилання.

Основне призначення оператора dynamic_cast – це приведення поліморфних типів, тобто приведення вказівників на похідний клас до вказівників на базовий клас.

Як приклад розглянемо наступну ситуацію. Хай тип Base – це базовий клас, а Derived – це клас, похідний (тобто успадковує, включає всі можливості) від класу Base. Тоді наступний код буде виконаний успішно:

 

Base *bp;

Base bob;

Derived *dp;

Derived dob;

bp = &dob; // вказівник базового класу вказує

// на об'єкт похідного класу

dp = dynamic_cast<Derived *>(bp);

if (!dp)

cout << “Приведення типів пройшло успішно”;

 

Класи, спадкування класів і поліморфізм детально розглядаються пізніше, в розділі 7 даного навчального посібника.

еще рефераты
Еще работы по информатике