Có bất kỳ lý do nào để thực hiện các quyền trên hàm ảo C++ ghi đè khác với lớp cơ sở không? Có nguy hiểm nào khi làm như vậy không?Ghi đè các chức năng ảo công cộng với các chức năng riêng tư trong C++
Ví dụ:
class base {
public:
virtual int foo(double) = 0;
}
class child : public base {
private:
virtual int foo(double);
}
Các C++ faq nói rằng đó là một ý tưởng tồi, nhưng không nói lý do tại sao.
Tôi đã thấy thành ngữ này trong một số mã và tôi tin rằng tác giả đã cố gắng để làm cho lớp cuối cùng, dựa trên giả định rằng không thể ghi đè lên một hàm thành viên riêng tư. Tuy nhiên, This article hiển thị ví dụ về các hàm riêng tư ghi đè. Tất nhiên another part of the C++ faq khuyên bạn không nên làm như vậy.
câu hỏi cụ thể của tôi:
Có bất kỳ vấn đề kỹ thuật với việc sử dụng một sự cho phép khác nhau cho các phương pháp ảo trong các lớp học có nguồn gốc vs lớp cơ sở?
Có lý do chính đáng nào để làm như vậy không?
phát minh lại "được bảo vệ" phải không? –