Che cosa è “= Elimina”?
-
02-10-2019 - |
Domanda
Cosa fare queste due righe di codice strani media?
thread_guard(thread_guard const&) = delete;
thread_guard& operator=(thread_guard const&) = delete;
Soluzione
Il =delete
è una nuova funzionalità di C ++ 0x. Significa che il compilatore dovrebbe smettere immediatamente di compilazione e si lamentano "questa funzione viene cancellata" una volta che il tale funzione utilizzo utente (Vedi anche: in default e funzioni cancellato -. il controllo di default del C ++ 0x FAQ da Bjarne Stroustrup)
Il thread_guard(thread_guard const&)
è un costruttore di copia, e thread_guard& operator=(thread_guard const&)
è un costruttore di assegnazione. Queste due linee insieme quindi disabilita la copia delle istanze thread_guard
.
Altri suggerimenti
E 'il nuovo C ++ 0x sintassi per la disattivazione delle determinate funzioni della classe. Vedere wikipedia per un esempio. Qui si sta dicendo che la classe thread_guard
è né copiabile e non cedibile.