Nel linguaggio di programmazione C ++, l'operatore di eliminazione chiama il distruttore dell'argomento specificato e restituisce la memoria allocata da new all'heap.
Qual è la differenza tra utilizzando l' deleteoperatore sull'elemento matrice anziché utilizzare il Array.splicemetodo ? Per esempio: myArray = ['a', 'b', 'c', 'd']; delete myArray[1]; // or myArray.splice (1, 1); Perché anche avere il metodo splice se posso eliminare gli elementi dell'array come faccio con gli oggetti?
class my_class { ... my_class(my_class const &) = delete; ... }; Cosa = deletesignifica in quel contesto? Ci sono altri "modificatori" (diversi da = 0e = delete)?
È consentito delete this;se l'istruzione delete è l'ultima istruzione che verrà eseguita su quell'istanza della classe? Ovviamente sono sicuro che l'oggetto rappresentato dal this-pointer sia newcreato. Sto pensando a qualcosa del genere: void SomeModule::doStuff() { // in the controller, "this" object of SomeModule is the "current module" // now, if …
Ne ho uno class Ache utilizza un'allocazione di memoria heap per uno dei suoi campi. La classe A è istanziata e memorizzata come campo puntatore in un'altra classe ( class B. Quando ho finito con un oggetto di classe B, chiamo delete, che presumo chiama il distruttore ... Ma questo …
Bene, penso che siamo tutti d'accordo sul fatto che ciò che accade con il seguente codice non è definito, a seconda di ciò che viene passato, void deleteForMe(int* pointer) { delete[] pointer; } Il puntatore potrebbe essere ogni sorta di cose diverse, quindi eseguire un incondizionato delete[]su di esso non …
Un libro in C ++ che ho letto afferma che quando un puntatore viene eliminato utilizzando l' deleteoperatore, la memoria nella posizione a cui punta viene "liberata" e può essere sovrascritta. Indica inoltre che il puntatore continuerà a puntare nella stessa posizione fino a quando non viene riassegnato o impostato …
Mi sono sempre chiesto perché l'impostazione automatica del puntatore su NULL dopo l' eliminazione non faccia parte dello standard. Se questo viene risolto, molti degli arresti anomali dovuti a un puntatore non valido non si verificano. Ma detto questo, posso pensare a un paio di ragioni per cui lo standard …
Ho una domanda di base sui puntatori const. Non sono autorizzato a chiamare alcuna funzione membro non const utilizzando un puntatore const. Tuttavia, sono autorizzato a farlo su un puntatore const: delete p; Questo chiamerà il distruttore della classe che in sostanza è un "metodo" non const. Perché è permesso? …
Come posso reallocin C ++? Sembra che manchi dalla lingua - c'è newe deletema non resize! Ne ho bisogno perché poiché il mio programma legge più dati, ho bisogno di riallocare il buffer per conservarlo. Non credo che deleteil vecchio puntatore e newil nuovo, più grande, sia l'opzione giusta.
In c++03esso è abbastanza chiaro che l'eliminazione di un puntatore nullo non ha alcun effetto. Infatti, è esplicitamente affermato in §5.3.5/2quanto: In entrambe le alternative, se il valore dell'operando di cancellazione è il puntatore nullo, l'operazione non ha effetto. Tuttavia, nell'attuale bozza di c++0xquesta frase sembra mancare. Nel resto della …
La creazione di un nuovo oggetto di classe C con l'operatore new () genera un errore qui: class C { public: C() {} virtual ~C() {} void operator delete(void*) = delete; }; int main() { C* c = new C; } con C2280: 'void C::operator delete(void *)': function was explicitly …
Ho provato a convocare ::deleteuna lezione in operator deleteesso. Ma il distruttore non viene chiamato. Ho definito una classe il MyClasscui operator deletesovraccarico è stato. Anche il globale operator deleteè sovraccarico. Il sovraccarico operator deletedi MyClasschiamerà il sovraccarico globale operator delete. class MyClass { public: MyClass() { printf("Constructing MyClass...\n"); } …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.