【发布时间】:2011-03-19 21:37:02
【问题描述】:
类型检查仅仅是整数比较吗?或者有一个GetTypeId 虚函数来区分哪个会使其成为整数比较是否有意义?
(只是不希望对类名进行字符串比较)
编辑:我的意思是,如果我经常期待错误的类型,那么使用以下内容是否有意义:
struct Token
{
enum {
AND,
OR,
IF
};
virtual std::size_t GetTokenId() = 0;
};
struct AndToken : public Token
{
std::size_t GetTokenId() { return AND; }
};
并使用GetTokenId 成员而不是依赖dynamic_cast。
【问题讨论】:
-
@YeenFei:我知道 Dynamic_Cast 实际上做了什么,我只是好奇(出于各种原因)我是否应该依赖它而不是为令牌提供我自己的类型代码。
-
如果 RTTI 是您的应用程序的开销,请考虑使用类型特征。我在stackoverflow.com/questions/2377636/… 上发布了一些示例
-
奇怪的是没有人提到,
virtual基类是另一种蠕虫,这里不讨论... -
可能是因为我们从像瘟疫这样的虚拟基地运行 :)
标签: c++ dynamic-cast