Il temporaneo A(3)
non deve essere distrutto prima che venga stampato "Qui"?Non si dovrebbe distruggere il temporaneo A (3) prima che venga stampato "Qui"?
#include <iostream>
struct A
{
int a;
A() { std::cout << "A()" << std::endl; }
A(int a) : a(a) { std::cout << "A(" << a << ")" << std::endl; }
~A() { std::cout << "~A() " << a << '\n'; }
};
int main()
{
A a[2] = { A(1), A(2) }, A(3);
std::cout << "Here" << '\n';
}
uscita:
A(1)
A(2)
A(3)
Here
~A() 3
~A() 2
~A() 1
No, i distruttori vengono evocati non appena l'oggetto esce di portata (vale a dire, quando ''} raggiungimento del principale). – 101010
@ 101010 Non è il temporaneo distrutto alla fine della dichiarazione 'A a [2] = {A (1), A (2)}, A (3);'? –