Tôi thấy điều này từ C++ Hỏi đápTôi có nên trỏ từ một lớp dẫn xuất riêng đến lớp cơ sở của nó không?
Nói chung, số
Từ một hàm thành viên hoặc bạn bè của một lớp tư nhân có nguồn gốc, mối quan hệ đến lớp cơ sở được được biết đến, và chuyển đổi trở lên từ PrivatelyDer * đến Base * (hoặc PrivatelyDer & tới Base &) là an toàn; không cần số diễn xuất hoặc được đề xuất.
Tuy nhiên người sử dụng PrivatelyDer nên tránh chuyển đổi không an toàn này, vì nó được dựa trên một quyết định riêng của PrivatelyDer, và có thể thay đổi mà không cần báo .
Làm cách nào để hiểu các từ trên? Tôi không nghĩ lời giải thích là chính xác hay chính xác.
Tôi có một mã như thế này
class A{
};
class B: private A{
};
int main(){
B *b = new B();
A *a = new A();
a = b; //wrong
a = (A*)b; //right
}
Các diễn viên tiềm ẩn không biên dịch (A là cơ sở không thể tiếp cận), và một trong những thứ hai sử dụng một dàn diễn viên C-phong cách, đó là tương đương của 'reinterpret_cast' đây? – UncleBens
có bạn nói đúng, diễn giải lại diễn viên là điều ác như chúng ta đều biết. những gì ông đã làm trong dòng cuối cùng không phải là một thực hành tốt –