Перейти к содержанию
Fire Monkey от А до Я
  • 0

dynamic_cast что это?


Axbor

Вопрос

Рекомендуемые сообщения

  • 0

А что будет  если не использовать его? Можно ли не использовать когда я знаю точно что тип объекта именно такой? Помогает ли оно избежать утечек памяти?

Ссылка на комментарий
  • 0

Если Вам не нужно приводить переменную одного класса к переменной другого класса, то и использование dynamic_cast Вам не понадобится.

Про приведение типов:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 double dbl = 123.45;
 int i = (int)dbl; // Приведение значения типа double к значению типа int

 TButton *btn = dynamic_cast<TButton*>(Sender); // Приведение объекта типа TObject к объекту типа TButton
 ShowMessage(L"Нажата кнопка с именем " + btn->Name);

 // Нельзя привести типы классов так: TButton *btn = (TButton*)Sender;
}
Ссылка на комментарий
  • 0

 

Если Вам не нужно приводить переменную одного класса к переменной другого класса, то и использование dynamic_cast Вам не понадобится.

Про приведение типов:

void __fastcall TForm1::Button1Click(TObject *Sender)
{

 // Нельзя привести типы классов так: TButton *btn = (TButton*)Sender;
}

Отчего же?! Конечно так можно ))) .. но если это "сильно разные" компоненты, то произойдет исключение. При dynamic_cast будет красивый и безопасный Nil в указателе.

Изменено пользователем POV
Ссылка на комментарий
  • 0

Ну у меня был просто пример. А так можно и деление на ноль прописать и просто потом поймать исключение. Так что приводить типы классов, я считаю, надо только через dynamic_cast, а еще можно через static_cast. Как правильнее я не знаю. Думаю, что dynamic_cast выполняет приведение типов во время выполнения программы, а static_cast выполняет проверку допустимости приведения типов на этапе компиляции.

 

Бородатый анекдот в тему. Программист должен предусмотреть все варианты развития событий. И когда он ложится спать, то должен поставить на тумбочку 2 стакана: один с водой, один пустой. С водой на случай если ночью захочется пить, пустой на случай если не захочется.

Изменено пользователем d7d1cd
Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...