Esiste un ordine definito in cui le variabili locali sono deallocate in C++ (11)? Per essere più concisi: in quale ordine saranno visibili gli effetti collaterali dei distruttori di due variabili locali nello stesso ambito?Ordine di distruzione delle variabili locali C++
es .:
struct X{
~X(){/*do something*/}
}
int main(){
X x1;
X x2;
return 0;
}
È x1
o x2
distrutti prima quando principale ritorna o è l'ordine indefinito in C++ 11?
Quale parte dello standard C++ garantisce questo ordine? –
@DavidGrayson Una parte diversa per ogni categoria. Per oggetti con memoria locale o statica , vedere §3.6.3. Per oggetti con auto durata vedi §6.6 (che è _non_ dove ci si potrebbe aspettare di cercare ). Per i membri della classe e le basi, vedi §12.4/8. Per i provvisori, vedere §12.2. –
I temporali non seguono strettamente l'ordinamento LIFO, a causa dell'estensione a vita quando un riferimento si lega direttamente a uno. –