間違って何かばかげたことを書きましたが、驚いたことにうまくいきました。
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();
これらの例がどのように機能し、マッピングが行われたかを見て、私はびっくりしました。
誰かがこれらがどのように機能しているのか詳しく説明してもらえますか? 前もって感謝します。