【发布时间】:2013-07-06 00:09:21
【问题描述】:
已经完成了第一卷。在 Bruce Eckel 的 Thinking in C++ 中,我已经开始阅读第 2 卷。专门讨论RTTI(运行时类型识别)的章节最让我惊讶。我一直在阅读有关tyepid、dynamic_cast 等的信息。
但是,我有一个问题浮现在我的脑海中。他们是否通过提到的运营商来利用RTTI 的任何实际用途,即来自现实项目的一些示例?另外,遇到了哪些限制使其需要使用?
【问题讨论】:
-
实用,是的。常见的,没有。对于大多数应用程序来说,它的使用应该很少见。我猜 RTTI 的最大用途是实现
boost::any,它检查你get()的类型是否与你分配的相同。 -
我从未见过也没有使用过
typeid任何严重的地方,但dynamic_cast对于一些 运行时多态性很有用。关于dynamic_cast,如果你需要使用它,它通常(但不总是,当然)是糟糕设计的标志。 -
这里是使用
typeid's - stackoverflow.com/a/17549551/381333的示例