0
我對C++中的static_cast
和dynamic_cast
有一些疑問。他們完全通過保留已經設置的成員變量(除了不能從派生到基地傳遞的那些變量除外),將一個指針從類A
指向的類指向一個類B
?static_cast/dynamic_cast:它是否更改對象?
我注意到,如果我有像
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;
}
的構造不叫,但該方法確實。這怎麼可能?
那麼怎麼來了,是一個派生類對象調用它和底座的構造,但如果我從派生類切換到派生類的派生類構造函數不被調用? –
@JohnnyPauling:我不明白你的問題,但我相信你所經歷的並不是與鑄造有關。請更新您的問題以包含您的問題的*最少*,*完整*示例。 –
等一下,我會改變它 –