Dynamic_Cast C++

Dynamic Cast C



В этой статье будет рассмотрено динамическое приведение типов в языке программирования C++. Для начала мы должны понять понятие приведения и многие типы приведения. Процесс изменения типа данных переменной известен как приведение. Приведение типов в языке программирования C++ делится на две категории: неявное приведение и явное приведение.

Преобразование типа данных в C++:

Приведение типов — это процедура изменения типа данных на какой-либо другой тип данных. В языке программирования C++ существует два типа приведения или преобразования типов: неявное и явное приведение. Автоматическое преобразование типов — это другое название неявного приведения типов. Он выполняется компилятором во время компиляции в реальном времени и не требует ввода или действий пользователя. Когда в выражении есть два типа типов данных, возникает эта форма приведения. Например:

  Графический пользовательский интерфейс, текст, описание приложения генерируется автоматически







В приведенном коде мы видим, что в выражение последней строки вставлены целочисленная переменная и символьная переменная, а значение целочисленной переменной «i» изменено. Число ASCII, эквивалентное «a», будет преобразовано в символьное значение и добавлено к целочисленному значению переменной «i» в этом выражении. Если вывести значение переменной «i», результатом будет сумма обоих этих значений. Компилятор автоматически преобразует тип данных символьной переменной в целочисленный тип данных, преобразуя его в стандартное значение ASCII алфавита справа, что является прекрасным примером неявного или автоматического преобразования типов во время выполнения.



Теперь, когда дело доходит до явного приведения типов или преобразования типов, это не автоматизированный процесс; пользователь должен вручную преобразовать тип данных переменной в другой тип переменной в коде. Типы данных обычно располагаются в иерархии в зависимости от их объема памяти и объема информации, которую они могут хранить. Таким образом, когда тип данных более низкого порядка используется для хранения какой-либо информации, но должен быть преобразован в тип данных более высокого порядка, чтобы можно было минимизировать потерю информации и хранить все больше и больше информации, обычно используется явное приведение типов или преобразование типов. Выполнено. Например, поскольку переменная целочисленного типа не может хранить значения после десятичной точки, мы можем потерять некоторую информацию, если продолжим использовать целочисленные переменные. Чтобы избежать этой потери, мы преобразуем целочисленную переменную в переменную с плавающей запятой, сохраняя значения после десятичной точки и предотвращая потерю информации. Явное преобразование типов в языке программирования C++ может быть выполнено одним из двух способов: с помощью присваивания или с помощью оператора приведения. Преобразование присваивания выполняется в кодовом выражении, синтаксис которого приведен ниже.



# '(тип данных) выражение'

В приведенном выше коде мы должны указать допустимый тип данных в скобках, а после скобок мы должны написать переменную или выражение, которое мы хотим изменить, в тип данных, указанный в скобках.





Теперь мы рассмотрим тип преобразования, выполняемого операторами приведения в языке программирования C++. Операторы приведения также называются унарными операторами, которые заставляют переменную изменить свой тип данных с одного существующего на другой. Существует четыре типа операторов приведения: статическое приведение, динамическое приведение, постоянное приведение и повторное приведение.

Динамическое литье в С++:

Динамическое приведение типов в языке программирования C++ основано на концепции RTTI (идентификация типа во время выполнения). RTTI — это функция, присутствующая в нескольких языках программирования, таких как C/C++, Ada и Object Pascal. Идентификация типа во время выполнения или информация — это функция, которая идентифицирует и извлекает информацию о деталях типа данных объекта во время выполнения программы. Эта функция обеспечивает безопасный путь для методов приведения типов, таких как функция «typeid» или динамическое приведение типов. Он обнаруживает информацию о типе данных во время выполнения и помогает преобразовать тип данных, когда операторы находятся в игре.



Динамическое приведение в основном используется в C++ для безопасного приведения вниз во время выполнения. Для работы с динамическим приведением базовый класс должен иметь 1 виртуальную функцию. Динамическое приведение работает только с полиморфными базовыми классами, поскольку использует эту информацию для определения безопасного приведения вниз. Оператор динамического приведения выполняет динамическое приведение. Теперь, когда мы знаем о концепциях, связанных с динамическим приведением типов, мы можем перейти к части реализации. Давайте сначала посмотрим на синтаксис использования динамического приведения в языке программирования C++, который написан ниже:

# «dynamic_cast (выражение)»

В приведенном выше выражении первая часть описывает имя оператора; в угловых скобках мы пишем имя типа данных, в который нам нужно преобразовать наше выражение, а в круглых скобках мы пишем имя переменной или объекта, который мы хотим преобразовать.

Теперь, когда мы знаем, как использовать оператор динамического приведения и заполнять параметры для преобразования типов данных переменных, мы можем использовать его для преобразования типов данных переменных.

Использование метода динамического приведения в Ubuntu 20.04:

Чтобы реализовать эту концепцию, мы должны использовать несколько классов для работы с преобразованием объектов класса по наследству. Итак, чтобы сделать это в первую очередь, мы должны сначала знать, что программный файл C++ в среде Ubuntu хранится с расширением «.cpp», поэтому, чтобы создать этот файл на нашем рабочем столе, откройте терминал и введите «cd Desktop» на командной строке, затем нажмите клавишу ввода и введите «touch filename .cpp», чтобы создать файл с расширением «.cpp». Теперь мы напишем в этом файле код для создания базового класса и двух производных классов, а в коде драйвера будем использовать оператор динамического приведения.

  Графический пользовательский интерфейс, текстовое описание генерируется автоматически

Выйдите из файла после нажатия кнопки сохранения. Вернитесь к терминалу и создайте файл, используя команду «g++» с вашим именем файла и расширением «.cpp». С помощью этой команды будет создан файл с расширением «.out». Теперь вы можете запустить этот файл, введя «./», а затем расширение «.out».
  Автоматически сгенерированное текстовое описание

В этой программе указатель базового класса хранит производные объекты класса 1 (d1). В базовом классе динамического приведения указатель сохранил объект Derived1 и разместил его в производном классе 1, что обеспечило допустимое динамическое приведение.

Вывод :

В этой статье мы узнали о методе приведения типов, используемом в языке программирования C++. Тип приведения также подробно обсуждался, и мы сосредоточились на том, почему мы используем такие методы в программировании на C++. Мы обсудили вспомогательную функцию, которая помогает преобразовать тип данных переменной, извлекая информацию и проверяя правильность преобразования, которая называется RTTI. Мы также реализовали концепцию динамического приведения, используя оператор динамического приведения в выражении на языке программирования C++ в среде Ubuntu 20.04.