关于这个问题有很多问题,但似乎没有人专门解决这个问题:鉴于代码库不允许用虚函数解决所有问题(正如你通常会做的那样),有一个函数:
dynamic_cast
但很明显,即使没必要,演员也会被制作出来。如何编写此函数以仅检查,即使用staticText
功能而不进行实际演员?假设用虚函数替换对此函数的调用是不切实际的,或为此目的实现穷人的RTTI。
编辑:在标题上添加问号,强调对可能性的怀疑
答案 0 :(得分:1)
没有相同的功能。你只有两种选择。
我不知道为什么你甚至不关心防止指针调整,因为它是一个相当简单的例子,可以进行几次vtable查找(进入已经在缓存中的vtable)并执行几次减法。 dynamic_cast
的所有实际工作都将在两种情况下完成。此外,我没有看到is_a
的结果会在没有将指针强制转换为该类型的情况下使用。
没有简单的方法可以做你想做的事情,主要是因为它没有意义,因此没有人决定提供它。