Visualizzazione dei risultati da 1 a 7 su 7

Visualizzazione discussione

  1. #1

    [C++]-Ereditarietà multipla e classi virtuali

    Salve a tutti!
    Vorrei un chiarimento riguardante la seguente situazione: consideriamo la seguente gerarchia tra classi
    codice:
    class persona
    {
         protected:
              int p;
    };
    
    class studente:virtual public persona
    {
         protected:
              int s;
    };
    
    class lavoratore:virtual public persona
    {
         protected:
              int l;
    };
    
    class studente_lavoratore: public studente, public lavoratore
    {
         private:
              int sl;
    };
    In tale situazione, ereditando la classe base "persona" utilizzando la parola "virtual", si evita che nella classe studente_lavoratore ci siano due copie della variabile int p.(Cosa che accadrebbe se si togliesse la parola virtual).

    Detto ciò, se si prova a fare una sizeof degli oggetti di queste quattro classi, la situazione è la seguente:
    -sizeof(persona) 4 byte----> int p 4 byte
    -sizeof(studente) 12 byte---->int s 4 byte e int p 4 byte
    -sizeof(lavoratore) 12 byte--->int l 4 byte e int p 4 byte
    -sizeof(studente_lavoratore) 24 byte--->int sl 4 byte, int s 4 byte, int l 4 byte e int p 4 byte


    Per un oggetto di classe "studente", perchè la sizeof restituisce 12 byte? Cosa viene aggiunto?
    Stesso dicasi per la classe "lavoratore" e per la classe "studente_lavoratore". Cosa viene aggiunto?

    Grazie.
    Ultima modifica di MItaly; 11-02-2016 a 03:59

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.