20

Сравнение регулярного приведения типов, static_cast и dynamic_cast

37

Суть проблемы:

Я пишу на C и C++ почти двадцать лет, но есть один аспект этих языков, который я никогда не понимал. Я, конечно, использовал обычные преобразования (касты), например:

MyClass *m = (MyClass *)ptr;

Но есть еще два типа приведения типов, и я не знаю, чем они отличаются. В чем разница между следующими строками кода?

MyClass *m = (MyClass *)ptr;
MyClass *m = static_cast<MyClass *>(ptr);
MyClass *m = dynamic_cast<MyClass *>(ptr);

Я пытался найти информацию об этом, но все еще не могу уловить суть. Подскажите, пожалуйста, как правильно использовать static_cast и dynamic_cast и в чем их ключевые отличия по сравнению с обычным приведением типов?

0 ответ(ов)

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь