template <class T>
class Stack
{
public:
Stack(int = 10) ;
~Stack() { delete [] stackPtr ; } //<--- What does the "~" signify?
int push(const T&);
int pop(T&) ;
int isEmpty()const { return top == -1 ; }
int isFull() const { return top == size - 1 ; }
private:
int size ;
int top ;
T* stackPtr ;
} ;
risposta
E 'il distruttore, distrugge l'istanza, libera la memoria, ecc ecc
Ecco una descrizione da ibm.com:
distruttori sono di solito utilizzati per rilasciare la memoria e fare altre pulizia per un oggetto di classe e i suoi membri della classe quando l'oggetto viene distrutto. Un distruttore viene chiamato per un oggetto classe quando quell'oggetto esce dall'ambito o viene eliminato esplicitamente.
Vedi https://www.ibm.com/support/knowledgecenter/SSB27U_5.4.0/com.ibm.zos.r9.cbclx01/cplr380.htm
Questo è un distruttore. Viene chiamato quando l'oggetto viene distrutto (fuori dalla portata della vita o cancellato).
Per essere chiari, è necessario utilizzare ~ NameOfTheClass come per il costruttore, altri nomi non sono validi.
"altri nomi sono validi"? –
Vecchia risposta ... Penso che volevo dire che dopo ~ potrebbe essere un nome qualsiasi, purché sia uguale al nome della classe e al nome del costruttore. – Klaim
È un distruttore. La funzione è garantita per essere chiamata quando l'oggetto esce dall'ambito.
... se è allocato nello stack.Quando viene chiamato 'delete' sull'oggetto se è allocato sull'heap. – Jherico
@Jherico: In realtà è quando viene utilizzata la parola chiave "elimina". Ricorda che la parola chiave "new" richiama "operator new" e quindi chiama il costruttore sull'indirizzo restituito, quindi è perfettamente possibile la "nuova" memoria nello stack. :) La parola chiave "cancella" chiama il distruttore e quindi richiama "cancella operatore". – Troubadour
@Jherico o vive nello spazio dei nomi o è un membro della classe statico o una variabile statica locale della funzione: la durata dell'archiviazione statica. In altre parole: tutti i passeggeri con memoria automatica verranno automaticamente distrutti quando appropriato. Attenzione [Faticco di inizializzazione statica] (http://stackoverflow.com/a/1005709/85371) – sehe
Questo sarebbe il distruttore (liberando la memoria dinamica)
Come altri hanno notato, nel caso ti stai chiedendo a questo proposito è il distruttore per class Stack
.
Ma prendendo la tua domanda esattamente come appare nel titolo:
in C++ che cosa fa una tilde “~” prima di un nome di funzione significa?
c'è un'altra situazione. In qualsiasi contesto eccetto immediatamente prima del nome di una classe (che è il contesto del distruttore), ~
è l'operatore complementare (o non bit per bit). Per essere sicuri che non compare molto spesso, ma si può immaginare un caso come
if (~getMask()) { ...
che è simile, ma ha un significato molto diverso.
- 1. Cosa significa e prima che il nome della funzione significhi?
- 2. Che cosa significa tilde symbol (~) in CSS
- 3. Che cosa significa una funzione senza corpo?
- 4. Cosa significa questa tilde?
- 5. Cosa significa: :: significa in C++?
- 6. Cosa significa `* &` in una dichiarazione di funzione?
- 7. Che cosa significa quando una funzione membro è volatile?
- 8. Che cosa significa "~" significa prima di enumerazioni
- 9. phpMyAdmin - Che cosa significa tilde (~) nella colonna delle righe?
- 10. Cosa significa tilde (~) nella traccia java stack?
- 11. Che cosa significa?. significa in C#?
- 12. Cosa fa (void) "nome variabile" all'inizio di una funzione C?
- 13. Che cosa significa la tilde (~) nel mio file composer.json?
- 14. Che cosa significa "[questo]" significa in C++
- 15. Cosa significa .class dopo il nome di una classe
- 16. Che cosa significa "_" in una dichiarazione Golang?
- 17. Che cosa significa #x all'interno di una macro C?
- 18. Che cosa significa information_schema.TABLES.DATA_FREE significa in MySQL?
- 19. Che cosa significa il simbolo "#" in TSQL?
- 20. Che cosa significa thread_local in C++ 11?
- 21. Che cosa significa per una funzione hash essere incrementale?
- 22. Qual è la funzione di un asterisco prima del nome di una funzione?
- 23. Cosa significa "&" in C++?
- 24. Che cosa significa "~~" in Perl?
- 25. Cosa significa la tilde (~) in questo esempio di Scala?
- 26. Cosa significa :: * in C++?
- 27. Che cosa significa "monolitico"?
- 28. Cosa significa una stella * da sola in una dichiarazione di funzione?
- 29. Cosa significa iniziare una funzione PHP con una e commerciale?
- 30. Che cosa significa `_time_independent_equals`?
~ è l'operatore di negazione bit per bit. Quando applicato a una definizione di funzione, significa che la funzione farà l'opposto * di quello che dice che farà - per esempio, '~ push()' farà saltare la pila, e '~ writeSeriousComment()' produrrà effettivamente commenti come questo. –
Per il beneficio del tipo di persona che sembra pubblicare la maggior parte delle domande C++ su questo sito, non tentare di leggere il commento di j_random_hacker. – Alan
per il beneficio di persone che hanno il senso dell'umorismo (e alcune conoscenze di programmazione di base), prova a leggere il commento di j_random_hacker. –