已关闭,该问题需要details or clarity,目前不接受回答。
**想要改进此问题?**通过editing this post添加详细信息并澄清问题。
昨天关门了。
Improve this question
我想在理解为什么下面的代码片段有帮助
struct parent { virtual ~parent(){} };
struct child1 : parent {};
struct child2 : parent {};
struct childchild1 : child1 {};
int main()
{
childchild1 obj;
parent *p = &obj;
child1 *c1 = dynamic_cast<child1*>(p);
child2 *c2 = dynamic_cast<child2*>(p);
childchild1* cc1 = dynamic_cast<childchild1*>(p);
std::cout << std::boolalpha << (c1 == nullptr)
<< ' ' << (c2 == nullptr)
<< ' ' << (cc1 == nullptr) << std::endl;
}
给出以下输出:
假真假
1条答案
按热度按时间abithluo1#
动态强制转换检查对象的运行时类型,如果可以转换为目标,则转换(在本例中为指针)。
由于
childchild1
是child1
,child1
是parent
,所以parent
指针可以动态转换到这些。它不是child2
,所以尝试转换它会返回nullptr
。