Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    170

    C++ dichiarazione che non capisco...

    ciao a tutti.. qualcuno sa darmi una descrizione logica di questa definizione? l'ho trovata sul mio libro di c++ senza un contesto precedente... e sinceramente non capisco cosa voglia dire..

    A *Ptr = new(B) A ("Prova");

    E' qualcosa tipo cast in ?!!??! help!
    Ariok

  2. #2
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    codice:
    A *Ptr = new(B) A ("Prova");
    Un puntatore ad un nuovo oggetto (new) A costruito probabilmente con un costruttore ad un parametro ( A("Prova") ) castato a b (B).

    La sintassi è strana perchè io scriverei così:

    codice:
    A *Ptr = (B) new A ("Prova");

  3. #3
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381

    Re: C++ dichiarazione che non capisco...

    Originariamente inviato da ariok
    codice:
    A *Ptr = new(B) A ("Prova");
    E' il placement new che viene usato dagli allocatori in genere, ma può essere ridefinito anche in una classe.

    Significa "costruisci l'oggetto A nella locazione puntata da B.

    Quando si costruisce un oggetto con l'operatore new, sono due le operazioni che vengono fatte:
    1) si alloca memoria
    2) si invoca in costruttore.

    Ovviamente quando si distrugge vengono compiute le seguenti operazioni

    1) si invoca il distruttore
    2) si rilascia la memoria.

    con questo sistema di risparmia di allocare ogni volta memoria.

    Un banale esempio
    codice:
    	A* t = static_cast<A*>(::operator new(sizeof(A)));
    	new(t) A("prova");
            ...
    	t->A::~A();
    
    	new(t) A("ciao");
    	...
    	t->A::~A();
    	::operator delete(t);

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.