При чтении стандарта C++ я прочитал, что static_cast
является своего рода прямой инициализацией (стандарт C++ 8.5/15).
Я думаю, это означает, что во время static_cast
соответствующий перегруженный конструктор .
Например, есть тип B и тип D, производные от B, и объект D d
. Тогда выражение static_cast<B>(d)
является выражением static_cast
.
Стандартно это выражение static_cast
представляет собой прямую инициализацию. Означает ли это, что это вызовет конструктор типа B
и вернет новый сконструированный объект типа B
?
ИЗМЕНИТЬ
Еще один вопрос: как насчет B & b = d
или B b = d
? Включают ли эти два утверждения конструктор B
?