MyTetra Share
Делитесь знаниями!
cast
Время создания: 10.12.2017 19:48
Раздел: Знания - Компьютер - Языки программирования - С++
Запись: DuwazSandbox/mytetra/master/base/1512924504rzbhi0e491/text.html на raw.githubusercontent.com

C-style cast ((long)intValue) по сути самое медленное преобразование, так как в этом случае последовательно перебираются следующие вызовы:

const_cast

static_cast

static_cast + const_cast

reinterpret_cast

reinterpret_cast + const_cast


---


1. static_cast


static_cast преобразует выражения одного статического типа в объекты и значения другого статического типа. Поддерживается UpCast и DownCast. Проверка производится на уровне компиляции.


2. dynamic_cast


Использует систему RTTI (Runtime Type Information) для динамического приведения типов во время выполнения. В случае неправильного приведения типов для ссылок вызывается исключительная ситуация std::bad_cast, а для указателей будет возвращен 0.


3. const_cast


Снимает или добавляет const и volatile. Это преобразование проверяется на уровне компиляции.


4. reinterpret_cast


Приведение типов без проверки. reinterpret_cast — непосредственное указание компилятору. Применяется только в случае полной уверенности программиста в собственных действиях. Не снимает const и volatile. Применяется для приведения указателя к указателю, указателя к целому и наоборот.


 
MyTetra Share v.0.59
Яндекс индекс цитирования