gpt4 book ai didi

c++ - 使用 dynamic_cast 的奇怪行为

转载 作者:太空宇宙 更新时间:2023-11-04 16:14:41 24 4
gpt4 key购买 nike

<分区>

我在试验 dynamic_cast 时偶然发现了一些奇怪的行为。这是我的代码

struct Base
{
virtual ~Base(){}
virtual void output() = 0;
};

struct Derived1 : public Base
{
void output() {}
void doDerived_1()
{
std::cout << "derived 1\n";
}
};

struct Derived2: public Base
{
void output() {}
void doDerived_2()
{
std::cout << "derived 2\n";
}
};

int main()
{
Base* base = new Derived1();
Derived2* der2 = dynamic_cast<Derived2*>(base);
// der2 = 0
der2->doDerived_2();
}

即使 der2 等于 0,doDerived_2() 仍将被调用,并且其中的任何代码都将被执行。当我改为调用 output() 函数时,代码中断。

有人可以向我解释为什么这有效并且在应该明确时不会中断吗?谢谢

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com