运行时类型识别( Run-Time Type Informati
2019-05-29 本文已影响0人
吃柠檬的鸮
定义: RTTI 允许程序员在运行时识别C++类对象的类型。
优点:
RTTI在某些单元测试中非常有用,如在进行工厂类测试时用于检验一个新建对象是否为期
望的动态类型。
除测试外,极少用到。
缺点:运行时识别类型意味著设计本身有问题, 如果你需要在运行期间确定一个对象的类型,
这通常说明你需要重新考虑你的类的设计。
结论:
除单元测试外, 不要使用RTTI, 如果你发现需要所写代码因对象类型不同而动作各异的话,
考虑换一种方式识别对象类型。
虚函数可以实现随子类类型不同而执行不同代码,工作都是交给对象本身去完成。
如果工作在对象之外的代码中完成,考虑双重分发方案,如Visitor模式,可以方便的在对
象本身之外确定类的类型。
如果你认为上面的方法你掌握不了,可以使用RTTI,但务必请三思,不要去手工实现一个
貌似RTTI的方案( RTTI-like workaround) ,我们反对使用RTTI,同样反对贴上类型
标签的貌似类继承的替代方案