Eventuali duplicati:
How can moved objects be used?
What constitutes a valid state for a “moved from” object in C++11?L'oggetto spostato da essere lasciato in uno stato "sicuro"?
Nell'attuare semantica di movimento in C++ 11, dovrebbe il mosso-dall'oggetto essere lasciato in uno stato sicuro , o può viene lasciato in uno stato "spazzatura"?
ad es. Qual è l'opzione preferita per implementare il costruttore di movimento nel seguente esempio di un wrapper C++ 11 a una risorsa raw FILE*
?
// C++11 wrapper to raw FILE*
class File
{
FILE* m_fp;
public:
// Option #1
File(File&& other)
: m_fp(other.m_fp)
{
// "other" left in a "junk" state
}
// Option #2
File(File&& other)
: m_fp(other.m_fp)
{
// Avoid dangling reference in "other"
other.m_fp = nullptr;
}
...
};
Il distruttore dell'oggetto "junk" non sarà chiamato? Se lo farà e il distruttore chiama 'fclose (m_pf)' allora sicuramente rovinerà tutto –