#include<iostream>
using namespace std;
class base
{
public:
virtual void add() {
cout << "hi";
}
};
class derived : public base
{
private:
void add() {
cout << "bye";
}
};
int main()
{
base *ptr;
ptr = new derived;
ptr->add();
return 0;
}
no tengo un problema con cómo se implementa esto. Entiendo que uses vtables y vtable de derived contiene la dirección de la nueva función add(). Pero add() es privado, ¿no debería el compilador generar un error cuando intento acceder a él fuera de la clase? De alguna manera, no parece correcto.
Los especificadores de anulación y acceso son conceptos ortogonales. – sbi
vtables son un detalle de implementación. –