Bonjour,
Dans le code ci-dessous :
... j'appelle la fonction test_function2() et voila l'affichage :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
Mes questions :ctor
dtor
dtor
x 1
dtor
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 ?
Partager