static_cast
我对 C++有一些疑问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;
}
构造函数没有被调用,但是方法被调用了。这怎么可能?