C++について疑問がstatic_cast
あります。すでに設定されているメンバー変数(派生変数からベース変数に渡すことができない変数を除く)を保持することにより、ポインターが指しているオブジェクトをクラスからクラスdynamic_cast
に完全に変更しますか?A
B
私は私が次のようなものを持っている場合に気づきました
struct Base
{
Base() { }
virtual ~Base() { }
virtual void Method() { cout << "Base Method"; }
};
class Derived : public Base
{
public:
virtual void Method() { cout << "Override Method"; }
};
struct Derived2 : public Derived
{
Derived2() { cout << "Derived2 constructor"; }
void Method() { cout << "Override2 Method"; }
};
int main()
{
Base *myPointer = new Derived();
static_cast<Derived2*>(myPointer)->Derived2::Method();
delete myPointer;
return 0;
}
コンストラクターは呼び出されませんが、メソッドは呼び出されます。これはどのように可能ですか?