Theo những gì tôi đọc, thực hiện một dynamic_cast thời gian chạy sai có thể ném một ngoại lệ bad_cast hoặc trả về số không.Dynamic_cast thất bại như thế nào?
Có đúng không khi nói rằng nó sẽ trả về 0 nếu bạn đang truyền con trỏ?
tức là:
class Base { virtual void a(){} };
class Derived: public Base {};
int main() {
Base *base = new Base();
dynamic_cast<Derived*>(base);
return 0;
}
Và rằng nó sẽ ném một ngoại lệ bad_cast khi đúc đối tượng?
tức là:
class Base { virtual void a(){} };
class Derived: public Base {};
int main() {
Base base;
Base& ref = base;
dynamic_cast<Derived&>(ref);
return 0;
}
Ok, do đó khẳng định là đúng. Cảm ơn. Tôi đã chỉnh sửa thông điệp để làm cho lớp đa hình cơ sở (thêm chức năng ảo) và sử dụng phép đúc tham chiếu để loại bỏ ngoại lệ. – NIGO