g ++和clang ++都可以选择使用-fno-rtti
禁用RTTI。
这样做的后果是什么?
答案 0 :(得分:4)
您应该查阅GCC和Clang的文档。以下是海湾合作委员会documentation的摘录:
-fno-rtti
禁止使用虚拟函数生成有关每个类的信息,以供C ++运行时类型标识功能使用 (
dynamic_cast
和typeid
)。如果你不使用那些部分 语言,您可以使用此标志来节省一些空间。注意 异常处理使用相同的信息,但它会生成它 如所须。dynamic_cast
运算符仍可用于强制转换 不需要运行时类型信息,即转换为void*
或 明确的基类。
这意味着如果您没有使用typeid()
和dynamic_cast
,那么它应该没问题。
答案 1 :(得分:0)
使用RTTI的主要功能是dynamic_cast<>
和typeid
,因此您将无法使用它们。