我读过显式类型转换(我的重点):
当遇到C 风格的强制转换表达式时,编译器会尝试将其解释为以下强制转换表达式(按以下顺序):
const_cast<target-type>(expression)
;static_cast<target-type>(expression)
,带有扩展:即使基类不可访问(即,此转换忽略私有继承说明符),也允许将派生类的指针或引用强制转换为明确基类的指针或引用(反之亦然)。这同样适用于将指向成员的指针转换为指向明确非虚拟基的成员的指针;static_cast
(带有扩展名)后跟const_cast
;reinterpret_cast<target-type>(expression)
;reinterpret_cast
随后是const_cast
.
第 2 项和第 3 项中的“带扩展名”是什么意思?如果可能的话,我想要一个带扩展名和不带扩展名(如果有)的转换示例。
它只是意味着扩展其功能
static_cast
:例如:
你不能这样做:
但是你可以: