Khi tìm hiểu về đa hình, bạn thường thấy một cái gì đó như thế này
class Base { int prv_member; virtual void fn(){} }
class Derived : Base { int more_data; virtual void fn(){} }
Upcasting hoặc downcasting là gì? Là (Derived*)base_ptr;
một u ám hay downcast?
Tôi gọi nó là u ám vì bạn đang đi từ căn cứ vào một cái gì đó cụ thể hơn. Những người khác nói với tôi rằng đó là một sự thất vọng bởi vì bạn đang đi xuống một hệ thống phân cấp thành một cái gì đó cụ thể với đỉnh là gốc. Nhưng những người khác dường như gọi nó là những gì tôi gọi nó.
Khi chuyển đổi một ptr cơ sở sang một ptr dẫn xuất, nó được gọi là upcasting hay downcasting? và nếu ai đó có thể liên kết đến một nguồn chính thức hoặc giải thích lý do tại sao nó được gọi là tuyệt vời hơn.
virtual
là không cần thiết nhưng không "làm tổn thương". Bạn có thể giải thích lý do tại sao bạn nghĩ rằng nó hoàn toàn không nên được sử dụng trong bối cảnh đó không?