Sur Symbian, si une fonction se ferme en raison d'un congé, les destructeurs de ses variables locales (automatiques) sont-ils appelés? De ce que j'ai essayé sur l'émulateur, ils sont. Mais alors, pourquoi utiliser le Cleanup Stack plutôt que des pointeurs intelligents?Des objets locaux sont-ils détruits dans le cas d'un congé sur Symbian?
1
A
Répondre
3
Oui, les variables automatiques sont correctement détruites. Depuis (je pense) la version 9.1 de Symbian OS, quitter est implémenté en utilisant des exceptions C++.
Les versions antérieures de Symbian ne prenaient pas en charge les exceptions, d'où le mécanisme de la pile de nettoyage. Les variables automatiques n'auraient pas eu leurs destructeurs appelés en partant.
Oui et donc la convention de ne pas construire des classes avec des destructeurs explicites (classes non-T) sur la pile. – laalto