【发布时间】:2011-01-03 23:04:40
【问题描述】:
在 C++ 中,我想知道对象的实际类型是否来自同一个类,而不是同一个类或派生类。这类似于以下 C# 代码:
Class Base
{
}
Class Child:Base
{
}
Base childObject = new Child();
If (childObject.GetType() == typeof(Child))
{
// do some code
}
谢谢!
【问题讨论】:
-
childObject的类型是什么?在 C++ 中没有通用的方法来做到这一点,因为在运行时,类型的概念不存在。 -
虽然你什么也没说 childObject.GetType() 是什么,但是这段代码很糟糕,因为它在类型比较上分支。这就是 OOP 应该消除的。
-
@Gene:这个问题只有你来自C#并且知道object.GetType()做什么才能理解。
-
@DeadMG:在任何面向对象的语言中这样做都不是一件好事,包括在 CLR 上运行的语言(如 C#)。
-
@Billy:我并不是说这是个好主意——我也认为这很愚蠢。但是,从根本上说,如果您不了解他要替换的功能,您将无法处理这个问题。
标签: c++ casting typechecking