C++结构继承和指针赋值[已关闭]

ttisahbt  于 2023-04-08  发布在  其他
关注(0)|答案(1)|浏览(105)

已关闭,该问题需要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;
}

给出以下输出:
假真假

abithluo

abithluo1#

动态强制转换检查对象的运行时类型,如果可以转换为目标,则转换(在本例中为指针)。
由于childchild1child1child1parent,所以parent指针可以动态转换到这些。它不是child2,所以尝试转换它会返回nullptr

相关问题