Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    106

    Domanda su Distruttore [c++]

    So che la domanda sembrerà un po strana e che fare una cosa del genere pùò essere inutile se non probabilmente anche impossibile,ma lo chiedo per avere una risposta dai più esperti..
    Possiamo chiamare in una funzione che lavora su un classe,il distruttore della stessa classe??

    Grazie...

  2. #2
    Versione breve: si può ma non si deve.
    ---
    Versione lunga: si può ma non ha nessun senso tranne in casi molto particolari, in genere quando si è usato il placement new per la costruzione:
    codice:
    void Funzione()
    {
        char buffer[sizeof(UnaClasse)];    // Alloca manualmente la memoria per l'oggetto
        void* p = buffer;
        UnaClasse* c = new(p) UnaClasse();    // Chiama il placement new
        // ...
        c->~UnaClasse();   // Chiama manualmente il distruttore
    }
    ovviamente in questo caso il placement new e il richiamare manualmente il distruttore non ha alcun senso, visto che basterebbe fare
    codice:
    void Funzione()
    {
        UnaClasse c;
        // ...
    }
    e il distruttore verrebbe richiamato automaticamente. Tuttavia esistono dei casi in cui il placement new (e quindi il richiamare manualmente il distruttore) possono servire.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    106
    mi piacerebbe leggere a riguardo,sapresti linkarmi qualcosa??

  4. #4
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2011
    Messaggi
    106
    grazie per le informazioni...XD

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 © 2024 vBulletin Solutions, Inc. All rights reserved.