std::function et durée de vie d'une instance
Bonjour,
Dans le code ci-dessous :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
using fun = std::function<void(int)>;
class Class_
{
public:
Class_()
{
std::cout << "ctor" << std::endl;
}
~Class_()
{
std::cout << "dtor" << std::endl;
}
void operator()(int x_)
{
std::cout << "x " << x_ << std::endl;
}
};
void show(const fun& f_)
{
f_(1);
}
void test_function2()
{
fun fff;
{
Class_ ccc;
fff = ccc;
}
show(fff);
} |
... j'appelle la fonction test_function2() et voila l'affichage :
Citation:
ctor
dtor
dtor
x 1
dtor
Mes questions :
1 - Ce code est-il correct ? j'ai voulu testé std::function en limitant la portée de l'instance ccc, je ne pensais pas que ça pourrait fonctionner...
2 - pourquoi le destructeur est appelé 3 fois ?