Domande taggate «delete-operator»

Nel linguaggio di programmazione C ++, l'operatore di eliminazione chiama il distruttore dell'argomento specificato e restituisce la memoria allocata da new all'heap.




10
Cancella questo permesso?
È 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 …


16
In che modo delete [] sa che è un array?
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 …




5
Eliminazione di un puntatore a const (T const *)
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? …

5
Come si "rialloca" in C ++?
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.

2
È ancora sicuro eliminare nullptr in c ++ 0x?
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 …


3
Perché il distruttore non chiamato nell'operatore viene eliminato?
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"); } …
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.