15.4.2 RTTI的工作原理(4)
程序清单15.18所示程序的运行情况如下:
|
与前一个程序的输出一样,每次运行该程序的输出都可能不同,因为它使用rand( )来选择类型。另外,调用name()时,有些编译器可能提供不同的输出,如5Grand(而不是Grand)。
3.误用RTTI的例子
C++(www.cppentry.com)界有很多人对RTTI口诛笔伐,他们认为RTTI是多余的,是导致程序效率低下和糟糕编程(www.cppentry.com)方式的罪魁祸首。这里不讨论对RTTI的争论,而介绍一下应避免的编程(www.cppentry.com)方式。
请看程序清单15.17的核心代码:
|
|
提示:如果发现在扩展的if else语句系列中使用了typeid,则应考虑是否应该使用虚函数和dynamic_cast。


