Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    55

    [C++] Chiarimento binding dinamico

    Ho un dubbio circa il Binding Dinamico.. Siccome si attiva quando dichiariamo metodi virtual e li chiamiamo tramite puntatore o riferimento..

    Quando scrivo..

    codice:
     //Classe base
                   [...]
                   virtual void Stampa()const{
                           cout<<a<<b<<c;
                    }
    
                //Classe derivata
                 virtual void Stampa()const{
                          base::stampa();
                          cout<<d<<e;
                  }
    
    int main(){
        derivata x;
         x.stampa();
    }


    Questo è binding dinamico o no?
    Ultima modifica di MItaly; 17-01-2015 a 18:43 Motivo: Fix tag CODE

  2. #2
    No. Il tipo effettivo dell'oggetto è perfettamente noto, quindi il compilatore può richiamare il metodo direttamente, senza necessità di accedere alla vtable.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Questo è binding dinamico o no?
    Siccome si attiva quando dichiariamo metodi virtual e li chiamiamo tramite puntatore o riferimento
    'Attivare' non è proprio il termine adatto. È il meccanismo che prevede che la chiamata sia fatta in modo indiretto. Quando esegui:
    codice:
    derivata x;
         x.stampa();
    Il compilatore sa esattamente cos'è 'derivata': sia perché lo hai detto tu (metodi, membri) sia perché lo ha calcolato esso (grandezza, allineamento). D'altra parte, quando tu imponi che l'accesso all'oggetto non avvenga in modo diretto, il compilatore ha a disposizione meno informazioni al compile-time per determinare quale funzione verrà chiamata; pertanto, provvede a creare una look-up table che verrà consultata a runtime per chiamare la funzione virtual corretta in base all'oggetto puntato/referenziato.
    Quindi, virtual implica la possibilità di eventuale polimorfismo.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    55
    grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.