Visualizzazione dei risultati da 1 a 10 su 10

Hybrid View

  1. #1
    No, il concetto è molto più semplice.
    codice:
    int main()
    {
        ObjectV v1;
        ObjectV v2(v1);
        return 0;
    }
    Crasha (se sei fortunato) perché sia il distruttore di v1 che quello di v2 stanno cercando di eliminare lo stesso oggetto (quello a cui puntano entrambi gli a1).
    Amaro C++, il gusto pieno dell'undefined behavior.

  2. #2
    Utente di HTML.it L'avatar di MrX87
    Registrato dal
    Jun 2007
    Messaggi
    500
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    No, il concetto è molto più semplice.
    codice:
    int main()
    {
        ObjectV v1;
        ObjectV v2(v1);
        return 0;
    }
    Crasha (se sei fortunato) perché sia il distruttore di v1 che quello di v2 stanno cercando di eliminare lo stesso oggetto (quello a cui puntano entrambi gli a1).
    Okay....mentre se implementassi opportunamente i costruttori di copia in questo modo:

    codice:
    ObjectV::ObjectV(const ObjectV& objV ) 
    {
        std::cout << "Costruttore copia V " << std::endl;
        this->x = objV.x;
        this->a1 = new ObjectA(objV.a1);
    }
    
    
    ObjectA::ObjectA(const ObjectA* objA)
    {
        std::cout << "Costruttore copia A " << std::endl;
        this->y = objA->y;
    }
    dovrei risolvere il problema, infatti se nel main stampo i due membri y dell'oggetto ObjectA ci sono valori differenti.
    "Non può piovere per sempre" Il Corvo
    Forza Vigor!

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.