le funzioni sovraccaricate sono nascoste nella class derivata

In una class derivata Se ridefinisco / sovraccarico un nome di funzione da una class Base,
quindi quelle funzioni sovraccariche non sono accessibili / visibili alla class derivata.
Perchè è questo??

Se non sovraccarichiamo la funzione sovrasomposta dalla class base nella class derivata, tutte le versioni sovraccaricate di tale funzione sono disponibili per la class derivata
oggetti, perché è questo ??
qual è la ragione di questo. Se lo spieghi a livello di compilatore e linker
sarà più utile per me. non è ansible supportare questo tipo di scinario ??

  Modificato  
 Per esempio:

 class B  
 {  

   pubblico: 
      int f () {}
      int f (string s) {}
 };

 class D: pubblico B
 {
    pubblico:
     int f (int) {}
 };

 int main ()
 {
    D d;
    df (1);
    // df (stringa);  // nascosto per D
 } 

 Ora l'object 'd' non può accedere a f () ef (stringa).