当我读到书中的C ++演员时,总有一点是有用的,因为你可以轻松地查看.*_cast<
的来源以找出用法。
但有人真的使用这个吗?在我的职业生涯中,我真的不记得我需要这样的功能。对于用户类型,即使您没有IDE支持,按类型名称grep也更实用。此外,如果你仍然可以使用旧的C风格的角色来搜索C ++ - 强制转换,你将有机会错过所有类型的转换。
我是否会遗漏某些内容或建议“使用C ++强制转换,因为它很容易grep”在实践中并不真正可用?
答案 0 :(得分:7)
烧掉那些书。使用C ++样式转换只是因为它们更好:
static_cast
进行编译时检查。
如果运行时广播无效,则dynamic_cast
将返回nullptr
,或者抛出异常(取决于您正在投放的内容)。
reinterpret_cast
是一种向编译器(和代码的读者)断言你知道自己在做什么的表达方式。
const_cast
可用于明确删除或引入const
- ness。抛弃const
- ness可以将未定义的行为引入你的程序中,很明白它是显而易见的。
C风格的演员阵容不提供这些功能。