Possible Duplicate:
C++: overriding public\private inheritancefunzione virtuale privata nella classe derivata
class base {
public:
virtual void doSomething() = 0;
};
class derived : public base {
private: // <-- Note this is private
virtual void doSomething()
{ cout << "Derived fn" << endl; }
};
Ora, se faccio la seguente:
base *b = new child;
b->doSomething(); // Calls the derived class function even though that is private
Domanda:
- E 'in grado di chiamare la funzione classe derivata anche se è privato. Com'è possibile?
Ora, se posso cambiare lo specificatore di accesso eredità dal pubblico al protetta, ottengo un errore di compilazione/privato:
'type cast' : conversion from 'Derived *' to 'base *' exists, but is inaccessible
Nota: Sono consapevole dei concetti di specificatori di accesso eredità. Quindi nel secondo caso come derivato privato/protetto, è inaccessibile. Ma mi chiedo sulla risposta alla prima domanda. Qualsiasi input sarà molto apprezzato.
Penso che voglia sapere perché lo specificatore di accesso funziona in questo modo piuttosto che sapere qual è la fonte dell'errore. – Hossein