Giả sử tôi có một cơ sở và lớp trẻ và một chút đa kế thừa:Implicit đúc - mà dàn diễn viên được sử dụng
class Child : public Base, public AnotherBase
{
};
và một hàm foo(Base* b)
. Tôi cũng đã khởi tạo một số Child* c
. Sau đó tôi gọi foo(c)
.
Trình biên dịch tạo một diễn viên ngầm ở đây. Nhưng nó có phải là một dàn diễn viên kiểu C, static_cast<Base*>
hay cái gì khác?
Trình biên dịch C++ thực hiện [* chuyển đổi ngầm * * (http://en.cppreference.com/w/cpp/language/implicit_cast), và liên kết đó sẽ cho bạn biết tất cả những gì bạn cần biết (mặc dù rất khó để đọc và hiểu nhanh). –
Vì vậy, nếu sếp của tôi đã viết 'foo (static_cast (c))' tôi có thể xóa 'static_cast' một cách an toàn không? –
Có, một con trỏ đến một lớp con luôn luôn chuyển đổi hoàn toàn thành một con trỏ đến một lớp cơ sở. –