我错误地写了一些愚蠢的东西,令我惊讶的是,它奏效了。
class A
{ public:
void print()
{
std::cout << "You can't/won't see me !!!" << std::endl;
}
A* get_me_the_current_object()
{
return this;
}
};
int main()
{
A* abc = dynamic_cast<A*>(abc);
abc->print();
}
在这里,A* abc = dynamic_cast<A*>(abc)
我正在对未声明的指针执行 dynamic_cast。但是,它有效,所以我假设上述语句被破坏为:
A* abc;
abc = dynamic_cast<A*>(abc);
因此,它有效。但是,在尝试一些更奇怪的场景时,例如:
A* abc;
abc->print();
并进一步
A* abc = abc->get_me_the_current_object();
abc->print();
看着这些例子是如何工作的,映射是如何完成的,我大吃一惊。
有人可以详细说明这些是如何工作的吗?提前致谢。