2017-04-07 2 views
0

Je pense que dans la fonction err_fun, la pile em sera libre quand quitter err_fun(), donc le contenu de em sera libre dans le même temps, et pourquoi je peux toujours obtenir la bonne réponse dans la fonction principale avec st stack?C++ std :: le contenu de la pile ne sera pas libre en quittant la fonction

Merci.

#include <stack> 

stack<int> st; 

void err_fun() { 
    stack<int> em; 
    st.swap(em); 
} 

int main() { 
    err_fun(); 

    //... some operation with stack st. 
    return 0; 
} 
+0

Oui 'em' sera détruit, mais' st' ne le sera pas. Ils sont indépendants. – songyuanyao

Répondre

1

Le contenu de em sera copié comme c'est ce que vous avez demandé quand vous avez fait swap. Comme st est global, il n'est pas détruit.

+0

Je pensais que la méthode d'échange déplace simplement le pointeur de contenu. La méthode d'échange copie-t-elle toujours tout le contenu dans le contenu cible? comme copier le contenu d'em au contenu de st. –

+0

Je suis lié à la documentation et cela va dans des détails très spécifiques. Si vous voulez en savoir plus, c'est l'endroit où aller. – tadman