Главная Новости

Оператор dynamic_cast | Обучение программированию онлайн


Опубликовано: 01.09.2018

видео Оператор dynamic_cast | Обучение программированию онлайн

[C++] Dynamic_cast Преобразование типов

На прошлом уроке мы рассмотрели static_cast и сказали, что он не выполняет динамический контроль типов. Так вот, для безопасного приведения типов необходимо использовать dynamic_cast , так как контроль преобразования происходит на этапе выполнения программы. В случае успешного преобразования dynamic_cast возвращает ненулевой указатель. Рассмотрим пример.


Урок 71 - Практическое использование dynamic_cast

#include <iostream> using namespace std; class Base { public: Base() { } virtual ~Base() { } void info() { cout << "Base::info()\n\n"<<endl; } }; class Derived: public Base { public: Derived() { } ~Derived() { } void info() { cout << "Derived::info()\n\n"; } }; void main() { Base* base = new Derived(); base->info(); Derived *derived; derived = dynamic_cast<Derived*>(base); if(derived) derived->info(); delete base; }

В первом случае мы получим: Base::info(), т.к. вызывается метод info() класса Base. Во втором случае: Derived::info(), т.к. мы успешно преобразовали указатель base к типу Derived*.


[C++] Static_cast Преобразование типов

На этом уроке мы кратко рассмотрели оператор dynamic_cast, который обеспечивает приведение типов в динамическом режиме. Нам еще осталось рассмотреть операторы reinterpret_cast и const_cast, но об этом в следующем уроке.

Вы можете оставить комментарий ниже.
rss