come farlo?
perfettamente possibile, utilizzare la parola chiave using
.
non dovrebbe essere proibito?
Non necessario. Puoi sempre restituire ai membri indietro la loro accessibilità ma non più di quanto non fosse inizialmente. Quindi, se la classe base ha inizialmente dichiarato qualcosa di pubblico ed è stata solo la tua idea/restrizione a renderlo privato, questo non fa male alla classe base se lasci questa restrizione e la lasci pubblica, tutto sommato era pubblica a l'inizio. Citare da "Linguaggio di programmazione C++" sarà di grande aiuto qui.
Una dichiarazione using non può essere utilizzata per ottenere l'accesso a supplementari informazioni. È semplicemente un meccanismo per che rende più accessibili le informazioni .
quindi se fosse accessibile in classe di base, e si deriva la classe con protected
o private
parola chiave è possibile rimuovere questa restrizione e tornare indietro il loro livello iniziale di accesso da parte di "trasporto" loro di parte appropriata (public,protected,private
) nella definizione della classe derivata.
class U{
public:
int a;
protected:
int b;
private:
int c;
};
class V : private U{
public:
using U::b;
using U::a;
};
int main(int argc, char** argv) {
V v;
printf("\nV: %d %d %d",v.a,v.a,v.b);
U u;
printf("\nU: %d %d %d",u.a,u.a,u.a);
return 0;
}
Non vero. L'OP sta chiedendo informazioni sui membri di dati * private *. –
OP sta chiedendo di 'U :: c', che è privato in' U'. – juanchopanza
@AndyProwl no intendevo naturalmente un // –