15
根據我所讀到的,執行錯誤的運行時dynamic_cast可以拋出bad_cast異常或返回零。dynamic_cast如何失敗?
如果您正在投射指針,它會返回零是否正確?
即:
class Base { virtual void a(){} };
class Derived: public Base {};
int main() {
Base *base = new Base();
dynamic_cast<Derived*>(base);
return 0;
}
這鑄造對象時,它會拋出一個bad_cast異常?
即:
class Base { virtual void a(){} };
class Derived: public Base {};
int main() {
Base base;
Base& ref = base;
dynamic_cast<Derived&>(ref);
return 0;
}
這是編譯時錯誤,所以肯定是正確的。謝謝。我編輯了消息,以便使基類具有多態性(添加虛函數)並使用引用投射來拋出異常。 – NIGO