Comment C++ s'assure-t-il que les destructeurs sont appelés pour les objets affectés à la pile? Qu'advient-il de la fonction destructor (ou un pointeur vers elle) quand je cède la mémoire dynamique comme suit:Quel est le mécanisme par lequel les destructeurs sont appelés pour les objets affectés par la pile?
class MyClass {
public:
~MyClass()
{
std::cout<<"Destructor called."<<std::endl;
}
MyClass()
{
std::cout<<"Constructor called."<<std::endl;
}
};
....................................................................
//Limit scope for example
{
MyClass instance;
}
Le constructeur et destructor sont tous deux appelés. Que se passe t-il ici?
instance est le nom de l'objet. instance() est simplement un appel à l'argument no ctor de la classe.Les parens sont inutiles dans ce cas, mais ce n'est certainement pas un appel à une méthode appelée instance(). – dicroce
Je ne vois aucune allocation de mémoire dynamique. –