Czy jest jakikolwiek powód, aby uprawnienia do nadpisanej wirtualnej funkcji C++ różniły się od klasy bazowej? Czy jest w tym jakieś niebezpieczeństwo?Zastępowanie publicznych funkcji wirtualnych z prywatnymi funkcjami w C++
Na przykład:
class base {
public:
virtual int foo(double) = 0;
}
class child : public base {
private:
virtual int foo(double);
}
C++ faq mówi, że jest to zły pomysł, ale nie mówi dlaczego.
Widziałem ten idiom w jakimś kodzie i uważam, że autor próbował uczynić klasę ostateczną, opierając się na założeniu, że nie jest możliwe zastąpienie funkcji prywatnego członka. Jednak This article pokazuje przykład nadpisywania prywatnych funkcji. Oczywiście another part of the C++ faq zaleca odrobienie tego.
Moje konkretne pytania:
czy jest jakiś problem techniczny z użyciem innego zezwolenia na wirtualnych metod w klasach pochodnych vs klasy bazowej?
Czy istnieje uzasadniony powód, aby to zrobić?
ponowne wynalezienie "chronionych" jesteśmy? –